使用Spark SQL構(gòu)建交互式查詢引擎

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

README中有下載地址

如果你使用了 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)入查詢界面:

Snip20160709_5.png

目前支持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和端口了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容