StreamingPro目前已經(jīng)涵蓋流式/批處理,以及交互查詢?nèi)齻€(gè)領(lǐng)域,實(shí)現(xiàn)配置和SQL化
前言
StreamingPro 原來(lái)僅僅是用來(lái)作為Spark Streaming的一個(gè)配置化+SQL封裝,然而不經(jīng)意間,已經(jīng)涵蓋了批處理,交互式查詢等多個(gè)方面。今天就講講如何使用StreamingPro構(gòu)建一個(gè)交互式查詢引擎。
準(zhǔn)備工作
- 下載StreamingPro
如果你使用了 Spark 2.0 版本,則要下載對(duì)應(yīng)頁(yè)面上的Spark 安裝包。因?yàn)槟壳癝park 2.0 默認(rèn)支持Scala 2.11。我提供了一個(gè)機(jī)遇Scala 2.10版本的。
我們假設(shè)您將文件放在了/tmp目錄下。
同時(shí)建立一個(gè)只有test.json,下里面的內(nèi)容有:
{}
假設(shè)你把它放在了/tmp目錄。
啟動(dòng)StreamingPro
Local模式:
cd $SPARK_HOME
./bin/spark-submit --class streaming.core.StreamingApp \
--master local[2] \
--name sql-interactive \
/tmp/streamingpro-0.4.1-SNAPSHOT-online-1.6.1.jar \
-streaming.name sql-interactive \
-streaming.job.file.path file:///tmp/test.json \
-streaming.platform spark \
-streaming.rest true \
-streaming.driver.port 9004 \
-streaming.spark.service true
訪問(wèn)
http://127.0.0.1:9004/sqlui
后可進(jìn)入查詢界面:

目前支持elasticsearch 索引,HDFS Parquet 等的查詢,并且支持多表查詢。
除了交互式界面以外,也支持接口查詢:
http://127.0.0.1:9004/runtime/spark/sql
參數(shù)支持:
| 參數(shù)名 | 示例 | 說(shuō)明 |
|---|---|---|
| tableName.abc | hdfs://cluster/tmp/a.parquet | 索引或者parquet路徑,其中abc是SQL中的表名稱 |
| sql | SELECT count(distinct(mid)) as a ,floor(floor(time/100)/5)5 as b FROM abc group by floor(floor(time/100)/5)5 | 查詢SQL |
| loader_clzz.abc | org.elasticsearch.spark.sql | 驅(qū)動(dòng)類,如果是parquet文件則可簡(jiǎn)寫為parquet |
| loader_param.abc.es.nodes | node1 | 不同驅(qū)動(dòng)可能會(huì)有自己一些特定的參數(shù),比如es類的需要通過(guò)es.nodes傳遞ES集群在哪 |
上面的參數(shù)都是成套出現(xiàn),你可以配置多套,從而映射多張表。
集群模式:
cd $SPARK_HOME
./bin/spark-submit --class streaming.core.StreamingApp \
--master yarn-cluster \
--name sql-interactive \
/tmp/streamingpro-0.2.1-SNAPSHOT-dev-1.6.1.jar \
-streaming.name sql-interactive \
-streaming.platform spark \
-streaming.rest true \
-streaming.job.file.path file:///tmp/test.json \
-streaming.driver.port 9004 \
-streaming.spark.service true
接著進(jìn)入spark-ui界面獲取driver的地址,就可以訪問(wèn)了。
服務(wù)發(fā)現(xiàn)
因?yàn)榧耗J剑琩river的地址是變化的,所以一旦集群?jiǎn)?dòng)后我們需要注冊(cè)到某個(gè)地方,從而能然前端知道。目前支持zookeeper的方式,在啟動(dòng)命令行中添加如下幾個(gè)參數(shù):
-streaming.zk.servers 127.0.0.1:2181 \
-streaming.zk.conf_root_dir /streamingpro/jack
之后前端程序只要訪問(wèn)
/streamingpro/jack/address
就能獲取IP和端口了。