前言
StreamingPro可以很容易让你搭建一个Spark SQL Server 服务,并且提供Http 格式的接口进行交互。通常查询结果较小,但是如果用户的SQL可能会产生几G甚至几十G的结果,那么Driver 就直接挂了。StreamingPro提供了同步和异步机制,将SQL的查询结果放在HDFS上。如果是同步的话,执行完后返回下载地址(HTTP接口,StreamingPro提供),如果是异步,则会使用用户提供的回调函数告知任务完成,并且提供下载地址。
编译新版本
目前该功能只支持spark 2 以上的版本。
参考 如何自己打包
启动一个SQL Server
SHome=/Users/allwefantasy/streamingpro ./bin/spark-submit --class streaming.core.StreamingApp \ --master local[2] \ --name sql-interactive \$SHome/streamingpro-spark-2.0-0.4.15-SNAPSHOT.jar \ -streaming.name sql-interactive \ -streaming.job.file.path file://$SHome/query.json \ -streaming.platform spark \ -streaming.rest true \ -streaming.driver.port 9003 \ -streaming.spark.service true \ -streaming.thrift true \ -streaming.enableHiveSupport true
query.json 的内容为:
{}
准备数据
创建一张表:
//CREATE TABLE IF NOT EXISTS zhl_table(id string, name string, city string, age Int) curl --request POST \ --url http://127.0.0.1:9003/run/sql \ --data 'sql=CREATE%20TABLE%20IF%20NOT%20EXISTS%20zhl_table(id%20string%2C%20name%20string%2C%20city%20string%2C%20age%20Int)%20'
导入数据:
你可以随便创建一个csv格式的数据,然后按如下方式导入
//LOAD DATA LOCAL INPATH '/Users/allwefantasy/streamingpro/sample.csv' INTO TABLE zhl_table curl --request POST \ --url http://127.0.0.1:9003/run/sql \ --data 'sql=LOAD%20DATA%20LOCAL%20INPATH%20%20'\''%2FUsers%2Fallwefantasy%2Fstreamingpro%2Fsample.csv'\''%20%20INTO%20TABLE%20zhl_table'
异步导出数据:
curl --request POST \ --url http://127.0.0.1:9003/run/sql \ --data 'sql=select%20*%20from%20zhl_table&async=true&resultType=file&path=%2Ftmp%2Fjack&callback=http%3A%2F%2F127.0.0.1%3A9003%2Fpull'
WX20170711-153834.png
接口会返回一个空数组。
async: true,异步返回。
sql : 查询SQL
path: hdfs 暂存路径
callback: StreamingPro会调用该参数提供的接口告知下载地址。
同步导出数据:
async: false
sql : 查询SQL
resultType: file
path: hdfs 暂存路径
接口会返回下载路径。将该路径黏贴到浏览器上即可下载文件。
作者:祝威廉
链接:https://www.jianshu.com/p/77514d90b1a9
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦