前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >StreamingPro 支持类SQL DSL

StreamingPro 支持类SQL DSL

作者头像
用户2936994
发布2018-08-27 14:34:34
4930
发布2018-08-27 14:34:34
举报
文章被收录于专栏:祝威廉

前言

spark sql在喜马拉雅的使用之xql 这篇文章影响,我发现类似下面这种语法是极好的:

代码语言:javascript
复制
//加载mysql表
load jdbc.`mysql1.tb_v_user` as mysql_tb_user;
//处理后映射成spark临时表
select * from mysql_tb_user limit 100 as result_csv;
//保存到文件里
save result_csv as csv.`/tmp/todd/csv_test`;
//加载文件
load csv.`/tmp/todd/csv_test` as csv_input;
//处理文件
select * from csv_input limit 10 as csv_input_result;
//再次保存结果,并且设置分区字段
save csv_input_result as json.`/tmp/todd/result_json` partitionBy uid;

核心是load,select,save 三个语法动作。这个用来做ETL会更加方便。而且和Spark SQL Server 结合,会显得更有优势,不用每次启动向Yarn申请资源。所以这里也仿照了一套。

感受新语法

需要自己编译一个新版本,具体参看: https://github.com/allwefantasy/streamingpro/blob/master/README-CN.md

先启动一个StreamingPro Rest Server:

准备一个只包含

代码语言:javascript
复制
{}

的query.json的文件(名字可以任意),然后按如下的方式启动即可:

代码语言:javascript
复制
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

我们先看下脚本:

代码语言:javascript
复制
//链接一个mysql 数据库,并且将该库注册为db1
connect jdbc 
     where 
    driver="com.mysql.jdbc.Driver"
    and url="jdbc:mysql://127.0.0.1/alarm_test?characterEncoding=utf8"
    and user="root"
    and password="****"
    as db1;
//加载t_report表为tr
load jdbc.`db1.t_report` as tr;
// 把tr表处理完成后映射成new_tr表
select * from tr  as new_tr;
//保存到/tmp/todd目录下,并且格式为json
save new_tr as json.`/tmp/todd`;

为此,StreamingPro新添加了一个接口/run/script,专门为了执行脚本

代码语言:javascript
复制
curl --request POST \
  --url http://127.0.0.1:9003/run/script \
  --data 'sql=上面的脚本内容'

我建议用PostMan之类的工具做测试。之后用/run/sql来查看结果

代码语言:javascript
复制
curl --request POST \
  --url http://127.0.0.1:9003/run/sql \
  --data 'sql=select * from  json.`/tmp/todd`'
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.08.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 感受新语法
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档