StreamingPro 支持类SQL DSL
时间:2022-06-08
本文章向大家介绍StreamingPro 支持类SQL DSL,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前言
受spark sql在喜马拉雅的使用之xql 这篇文章影响,我发现类似下面这种语法是极好的:
//加载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:
准备一个只包含
{}
的query.json的文件(名字可以任意),然后按如下的方式启动即可:
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
我们先看下脚本:
//链接一个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
,专门为了执行脚本
curl --request POST
--url http://127.0.0.1:9003/run/script
--data 'sql=上面的脚本内容'
我建议用PostMan之类的工具做测试。之后用/run/sql
来查看结果
curl --request POST
--url http://127.0.0.1:9003/run/sql
--data 'sql=select * from json.`/tmp/todd`'
- 用Python从零开始构建反向传播算法
- 备战CDA数据分析竞赛!Kaggle赛题大揭秘
- 如何用Python将时间序列转换为监督学习问题
- Spring MVC的配置和使用
- Java可以如何实现文件变动的监听
- 借助GitHub搭建属于自己的maven仓库
- 如何使用 scikit-learn 为机器学习准备文本数据
- Hyperledger Fabric Chaincode 开发
- 使用VS Code开发asp.net core
- 以太坊·将自定义数据写入到区块链中
- 使用TensorFlow实现股票价格预测深度学习模型
- 06-移动端开发教程-fullpage框架
- 07-移动端开发教程-移动端视口
- 10-移动端开发教程-移动端事件
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练
- 同城双活与异地多活架构分析
- leetcode多线程之按序打印
- leetcode多线程之交替打印FooBar
- leetcode链表之反转链表
- leetcode链表之合并两个排序的链表
- leetcode链表之找出倒数第k个节点
- ZooKeeper能解决什么问题?不能解决什么问题?
- 画解算法 77-组合
- Spring 源码系列之容器概览~
- Spring Security 中如何让上级拥有下级的所有权限?
- Spring Security 权限管理的投票器与表决机制
- 通过cycler实现属性的自动映射
- 为你的图片添加图例
- matplotlib中的黑魔法:constrained和tight layout