logo资料库

星环StreamSQL使用手册.pdf

第1页 / 共63页
第2页 / 共63页
第3页 / 共63页
第4页 / 共63页
第5页 / 共63页
第6页 / 共63页
第7页 / 共63页
第8页 / 共63页
资料共63页,剩余部分请下载后查看
Transwarp Data Hub Version 4.7 StreamSQL使用手册
目录
1. Inceptor StreamSQL简介
1.1. StreamSQL的优势
1.2. StreamSQL的技术指标
2. 快速入门
2.1. 建Kafka数据源
2.2. 建Stream及触发StreamJob
2.3. 接收并处理Kafka传来的数据
2.4. 停止Streamjob
3. StreamSQL基础
3.1. Stream
3.1.1. Input Stream
3.1.2. Derived Stream
3.2. StreamJob
3.3. Application
3.4. 与普通SQL最大的两个区别
3.4.1. DML SQL背景运行
3.4.2. 结果输出
4. 交互方式
5. DDL
5.1. Stream管理
5.1.1. CREATE STREAM
5.1.1.1. Kafka为源
5.1.1.2. Socket为源
5.1.1.3. 复杂数据类型格式的指定
5.1.1.3.1. 复杂类型STRUCT
5.1.1.3.2. 复杂类型ARRAY
5.1.1.3.3. 复杂类型MAP
5.1.1.3.4. 复杂类型TIMESTAMP
5.1.1.4. 自定义用户数据解析
5.1.2. CREATE STREAM AS SELECT
5.1.2.1. FILTER转化
5.1.2.2. WINDOW转化
5.1.3. SHOW STREAM
5.1.4. DESCRIBE STREAM
5.1.5. ALTER STREAM
5.1.5.1. 重命名Input Stream
5.1.5.2. 修改Input Stream属性
5.1.5.3. 增加Input Stream列
5.1.5.4. 替换Input Stream列
5.1.6. DROP STREAM
5.2. Application管理
5.2.1. CREATE APPLICATION
5.2.2. DESCRIBE APPLICATION
5.2.3. SHOW CURRENT APPLICATION
5.2.4. ALTER APPLICATION
5.2.5. SHOW APPLICATIONS
5.2.6. DROP APPLICATIONS
5.3. StreamJob管理
5.3.1. CREATE STREAMJOB
5.3.2. DESCRIBE STREAMJOB
5.3.3. ALTER STREAMJOB
5.3.4. SHOW STREAMJOB
5.3.5. LIST STREAMJOB
5.3.6. DROP STREAMJOB
6. DML
6.1. 窗口
6.1.1. 滑动窗口
6.1.2. 跳动窗口
6.1.3. 事件时间切分的其他设置
6.1.4. 对Window Stream的聚合操作
6.1.5. 流之间的关联
6.2. 输出方式
6.2.1. 输出到流
6.2.2. 输出到表
6.2.3. 批量Flush到HDFS
6.3. 查询:SELECT
6.3.1. Ad-hoc查询
6.4. 流不支持的DML
7. StreamSQL权限管理
7.1. 授予权限
7.1.1. 授予全局权限
7.1.2. 授予database级别权限
7.1.3. 授予Application级别权限
7.1.4. 授予Stream级别权限
7.2. 收回权限
7.2.1. 收回全局权限
7.2.2. 收回Database级别权限
7.2.3. 收回Application级别权限
7.2.4. 收回Stream级别权限
7.3. 查看权限
7.4. StreamSQL操作所需权限总结
8. 运行时管理
8.1. 全局管理
8.1.1. 背压功能(Back Pressure)
8.2. Application级别管理
8.3. StreamJob级别管理
9. 高级功能
9.1. 监控告警
9.2. 高可用性
9.2.1. 开启CheckPoint
9.2.2. 启动Standby InceptorServer
9.3. At-Least-Once支持
9.4. 自定义参数设置
9.4.1. Batch duration
9.4.2. Kafka receiver个数
9.4.3. Holodesk窗口设置
9.5. PLSQL
9.5.1. 开启流上的PLSQL
9.5.2. 开启PLSQL的编译优化
9.5.3. 禁用print
9.5.4. 嵌套SELECT需要加 Ad-hoc的hint
9.5.5. 数据库名不允许以数字起始
9.5.6. 简单函数示例
9.5.7. 游标示例
10. StreamSQL实战
10.1. Application间的资源隔离
10.2. 流上的统计
10.3. 按时间字段切分的多流关联
10.4. 流上的PL/SQL
10.5. StreamJob的持久化
10.6. 高级功能
10.6.1. 邮件警告
10.6.2. 高可用性
10.6.3. Holodesk配置
11. StreamSQL参数整理
附录 A: Kafka基础
A.1. 基础概念
A.1.1. Topic和Producer
A.1.2. Consumer和Consumer Group
A.1.3. Replication和Failover
A.2. Kafka相关脚本的简单使用
A.2.1. 启动Zookeeper和Kafka服务
A.2.2. 创建Topic
A.2.3. 查看Topic
A.2.4. 用Producer发送消息
A.2.5. 用Consumer接收消息
A.2.6. Kafka权限管理
A.2.6.1. 授予权限
A.2.6.2. 查看权限
A.2.6.3. 收回权限
客户服务
Transwarp Data Hub Version 4.7 StreamSQL使用手册 星环信息科技(上海)有限公司 版本号 T00147-10-010, 2017-01-12
目录 1. Inceptor StreamSQL简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2 1.1. StreamSQL的优势 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2 1.2. StreamSQL的技术指标 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  2 2. 快速入门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4 2.1. 建Kafka数据源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  4 2.2. 建Stream及触发StreamJob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  5 2.3. 接收并处理Kafka传来的数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  6 2.4. 停止Streamjob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  7 3. StreamSQL基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  8 3.1. Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  9 3.1.1. Input Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  9 3.1.2. Derived Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  9 3.2. StreamJob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  10 3.3. Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  10 3.4. 与普通SQL最大的两个区别 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11 3.4.1. DML SQL背景运行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11 3.4.2. 结果输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  11 4. 交互方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12 5. DDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  13 5.1. Stream管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  13 5.1.1. CREATE STREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  13 5.1.1.1. Kafka为源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  14 5.1.1.2. Socket为源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  16 5.1.1.3. 复杂数据类型格式的指定 . . . . . . . . . . . . . . . . . . . . . . . . . . .  16 5.1.1.3.1. 复杂类型STRUCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  16 5.1.1.3.2. 复杂类型ARRAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  16 5.1.1.3.3. 复杂类型MAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17 5.1.1.3.4. 复杂类型TIMESTAMP . . . . . . . . . . . . . . . . . . . . . . . . . . .  17 5.1.1.4. 自定义用户数据解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17 5.1.2. CREATE STREAM AS SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . .  17 5.1.2.1. FILTER转化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18 5.1.2.2. WINDOW转化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18 5.1.3. SHOW STREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18 5.1.4. DESCRIBE STREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18 5.1.5. ALTER STREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18 5.1.5.1. 重命名Input Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18 5.1.5.2. 修改Input Stream属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18 5.1.5.3. 增加Input Stream列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19 5.1.5.4. 替换Input Stream列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19 5.1.6. DROP STREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19 5.2. Application管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19 5.2.1. CREATE APPLICATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
5.2.2. DESCRIBE APPLICATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20 5.2.3. SHOW CURRENT APPLICATION . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20 5.2.4. ALTER APPLICATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20 5.2.5. SHOW APPLICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20 5.2.6. DROP APPLICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20 5.3. StreamJob管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20 5.3.1. CREATE STREAMJOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21 5.3.2. DESCRIBE STREAMJOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21 5.3.3. ALTER STREAMJOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21 5.3.4. SHOW STREAMJOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21 5.3.5. LIST STREAMJOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  21 5.3.6. DROP STREAMJOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  22 6. DML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23 6.1. 窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23 6.1.1. 滑动窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  23 6.1.2. 跳动窗口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  24 6.1.3. 事件时间切分的其他设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  24 6.1.4. 对Window Stream的聚合操作 . . . . . . . . . . . . . . . . . . . . . . . . . . .  26 6.1.5. 流之间的关联 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27 6.2. 输出方式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27 6.2.1. 输出到流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  27 6.2.2. 输出到表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  28 6.2.3. 批量Flush到HDFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  28 6.3. 查询:SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  28 6.3.1. Ad-hoc查询 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  29 6.4. 流不支持的DML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  29 7. StreamSQL权限管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  30 7.1. 授予权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31 7.1.1. 授予全局权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31 7.1.2. 授予database级别权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32 7.1.3. 授予Application级别权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32 7.1.4. 授予Stream级别权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32 7.2. 收回权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32 7.2.1. 收回全局权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  32 7.2.2. 收回Database级别权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  33 7.2.3. 收回Application级别权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  33 7.2.4. 收回Stream级别权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  33 7.3. 查看权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  33 7.4. StreamSQL操作所需权限总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  34 8. 运行时管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35 8.1. 全局管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35 8.1.1. 背压功能(Back Pressure) . . . . . . . . . . . . . . . . . . . . . . . . . . .  35 8.2. Application级别管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35 8.3. StreamJob级别管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  35 9. 高级功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37
9.1. 监控告警 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37 9.2. 高可用性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37 9.2.1. 开启CheckPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37 9.2.2. 启动Standby InceptorServer . . . . . . . . . . . . . . . . . . . . . . . . . . .  37 9.3. At-Least-Once支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  37 9.4. 自定义参数设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  38 9.4.1. Batch duration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  38 9.4.2. Kafka receiver个数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  38 9.4.3. Holodesk窗口设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  38 9.5. PLSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  38 9.5.1. 开启流上的PLSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  38 9.5.2. 开启PLSQL的编译优化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  39 9.5.3. 禁用print . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  39 9.5.4. 嵌套SELECT需要加 Ad-hoc的hint . . . . . . . . . . . . . . . . . . . . . . . . .  39 9.5.5. 数据库名不允许以数字起始 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  39 9.5.6. 简单函数示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  39 9.5.7. 游标示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  39 10. StreamSQL实战 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40 10.1. Application间的资源隔离 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  40 10.2. 流上的统计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  41 10.3. 按时间字段切分的多流关联 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  42 10.4. 流上的PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  43 10.5. StreamJob的持久化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  44 10.6. 高级功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  44 10.6.1. 邮件警告 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  44 10.6.2. 高可用性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  45 10.6.3. Holodesk配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  45 11. StreamSQL参数整理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  46 附录 A: Kafka基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47 A.1. 基础概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47 A.1.1. Topic和Producer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47 A.1.2. Consumer和Consumer Group . . . . . . . . . . . . . . . . . . . . . . . . . . . .  48 A.1.3. Replication和Failover . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  49 A.2. Kafka相关脚本的简单使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  49 A.2.1. 启动Zookeeper和Kafka服务 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  50 A.2.2. 创建Topic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  51 A.2.3. 查看Topic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  53 A.2.4. 用Producer发送消息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  54 A.2.5. 用Consumer接收消息 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  55 A.2.6. Kafka权限管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  56 A.2.6.1. 授予权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  56 A.2.6.2. 查看权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  57 A.2.6.3. 收回权限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  57 客户服务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  59
免责声明 本说明书依据现有信息制作,其内容如有更改,恕不另行通知。星环信息科技(上海)有限 公司在编写该说 明书的时候已尽最大努力保证期内容准确可靠,但星环信息科技(上海) 有限公司不对本说明书中的遗漏、 不准确或印刷错误导致的损失和损害承担责任。具 体产品使用请以实际使用为准。 注释: Hadoop® 和 SPARK® 是ApacheTM 软件基金会在美国和其他国家的商标或注册的 商标。 Java® 是 Oracle公司在美国和其他国家的商标或注册的商标。 Intel® 和Xeon® 是英特尔公司在美国、中国和其他国 家的商标或注册的商标。 版权所有 © 2013年-2017年星环信息科技(上海)有限公司。保留所有权利。 ©星环信息科技(上海)有限公司版权所有,并保留对本说明书及本声明的最终解释权和修 改权。本说明书 的版权归星环信息科技(上海)有限公司所有。未得到星环信息科技(上 海)有限公司的书面许可,任何人 不得以任何方式或形式对本说明书内的任何部分进行 复制、摘录、备份、修改、传播、翻译成其他语言、或 将其全部或部分用于商业用 途。 手册版本信息 版本号: T00147-10-010 发布日期: 2017-01-12 Preface | 1
1. Inceptor StreamSQL简介 在4.3版本之前,Transwarp Data Hub(TDH)上的流处理应用必须用Java或者scala开发,这将流处理应用的 开发门槛设置得非常高。从TDH 4.3开始,Transwarp Stream引入全新的StreamSQL使得用户可以通过SQL的方 式实现业务逻辑,大大降低了流应用开发的门槛。所以,星环科技推荐多数用户采用StreamSQL开发流应 用。StreamSQL几乎可以应用于所有业务场景,包括ETL工具,规则报警工具等简单业务场景。对于更复杂的 业务逻辑,用户可以选择使用PLSQL,属于StreamSQL的高级功能。 1.1. StreamSQL的优势 相对于采用编程的方式开发流应用,采用StreamSQL具有以下优势: • 极高的易用性 以往的流处理平台有较高的入门门槛,比如Spark Streaming,Storm,必须对框架以及流处理本身,甚 至是底层技术比较熟悉的情况下,才能写出高效的流处理程序。这大大地限制了流处理的推广和应用。 而使用StreamSQL,用户只需要有编写普通SQL的经验,就可以写出高效、安全、稳定的流处理应用。 • 性能提升 在一些条件下,采用StreamSQL的方式甚至比编程方式获得更高的性能提升。这是因为StreamSQL做了一 些特殊优化,在编程模式下无法轻易实现。比如,多条针对同一个输入流的SQL只需读取一份数据;增加 迭代框架,使得原本无法利用Spark API进行优化的迭代计算效率大大提升。 • 产品化程度高 通过编程的方式来实现流处理的另一个问题是产品化程度非常低。由于编程有较高的自由度,出现问题 的可能性很大;而又由于编程的方式将流处理平台和用户程序绑定在一起,用户没办法很好地区分是自 己代码的问题还是平台的问题,导致无法及时地分析出错原因。SQL作为一个通用的接口将大大地提高产 品化程度。 • 迁移成本低 用户原有的业务逻辑很多是通过SQL实现的,如果通过编程的方式迁移到流上,迁移成本非常高,还不能 保证迁移后的逻辑是否正确。而一旦采用StreamSQL的方式,用户只需要修改少量SQL,迁移成本几乎接 近零。 1.2. StreamSQL的技术指标 • 99%的ANSI SQL 2003的支持率 为了降低应用迁移成本, StreamSQL使用了完整的SQL编译器,支持ANSI SQL 92和SQL 99标准,并且支 持ANSI SQL 2003 OLAP核心扩展,可以满足绝大部分现有业务对SQL的要求,方便应用平滑迁移。 • 95%的PLSQL Oracle以及PLSQL DB2的支持率 StreamSQL完美兼容PLSQL Oracle 11g 以及PLSQL DB2最新版本,可以满足大多数用户的复杂业务场景。 • 强大的优化器提升性能 2 | 1. Inceptor StreamSQL简介
除了更好的SQL语义分析层以外,StreamSQL包含强大的优化器保证SQL在引擎上有最佳的性能。包含3级 优化器:首先是基于规则的优化器,应用静态优化规则并生成一个逻辑执行计划,其次是基于成本的优化 器,通过衡量多个不同执行计划的CPU,IO和网络成本,来选择一个更合理的计划并生成物理执行计划;最 后是代码生成器,对一些比较核心的执行逻辑生成更高效的执行代码或者Java Byte Code,从而保证SQL 业务在分布式平台上有最佳性能。 • 支持按数据字段时间切分滑动窗口和跳动窗口 常见的流框架一般只针对系统时间做窗口切分,但这往往达不到实际应用的要求。因此,StreamSQL实现 了复杂内部逻辑,使得用户通过简单的SQL语法就能指定特定数据字段作为窗口的依据。用户可以通过 与SQL 2003兼容的Window语法来创建滑动窗口或者跳动窗口,并在窗口上进行各种复杂的聚合操作。 • 支持多种输出方式 包括Hyperbase,Hive以及Holodesk等。 • 支持企业数据总线 从一个流读入数据,再将其输入另一个流,比如一个常见的企业数据总线以Kafka为存储中间件。 • 支持运行时隔离 保证多用户安全、稳定运行各自StreamSQL。原来流处理应用要么物理上完全隔离,但无法共享硬件资源 也不方便管理;要么部署在同一个集群,但可能导致资源分配不均,甚至有误操作影响其它用户的可 能。而StreamSQL抽离出运行时隔离概念,能保证用户启动、查看和停止流处理应用的操作只能针对当前 所在隔离层进行。 • StreamSQL与ANSI SQL 2003无缝兼容 比如,用户可以使用 CREATE STREAM 创建流;使用 DESCRIBE STREAM 获取流的信息;使用 ALTER STREAM 修改已经定义的流;使用 DROP STREAM 删除流;使用 SHOW STREAMS 查看已 经创建的流。 1. Inceptor StreamSQL简介 | 3
2. 快速入门 在开始正式介绍StreamSQL之前,我们先演示一个简单的StreamSQL例子。在这个例子中,我们将使用Kafka 的console工具生成一些简单的数据,并让StreamSQL来处理。这个演示包含三个部分: 1. 建一个Kafka数据源; 2. 在Inceptor中建一个Stream并触发StreamJob; 3. 在Inceptor中处理Stream从Kafka数据源接收的数据。 2.1. 建Kafka数据源 1. 登陆您集群中的一台安装了Kafka的节点。进入/usr/lib/kafka/bin目录,该目录下有建Kafka数据源的 所需要的一些脚本。 2. 建一个Kafka Topic 执行下面指令,运行/usr/lib/kafka/bin目录下的kafka-create-topic.sh脚本: ./kafka-create-topic.sh --partition 3 --topic demo --zookeeper 172.16.1.128:2181 --broker 172.16.1.127:9092 creation succeeded! 该topic名称为demo,使用172.16.1.128上的Zookeeper,分3个partition。注意,如果您的Kafka处在安 全模式下,你需要另外提供创建topic用户的principal和keytab,并且该用户需要有创建topic的权限。详 细请参考kafka权限管理.pdf。 3. 查看Kafka Topic 执行下面指令,运行/usr/lib/kafka/bin目录下的kafka-list-topic.sh脚本: ./kafka-list-topic.sh --zookeeper 172.16.1.128:2181 topic: demo partition: 0 leader: 5 replicas: 5 isr: 5 topic: demo partition: 1 leader: 6 replicas: 6 isr: 6 topic: demo partition: 2 leader: 4 replicas: 4 isr: 4 我们可以看到刚才建的名为demo的topic和一些相关信息,这些信息的意义会在之后的介绍中解释。 4. 建Kafka producer并发布消息 执行下面指令,运行/usr/lib/kafka/bin目录下的kafka-console-producer.sh脚本: ./kafka-console-producer.sh --broker-list 172.16.1.128:9092 --topic demo 这里我们指定了使用172.16.1.128节点为Kafka broker(详细介绍见后文),并且指定了producer发布 消息的topic为demo。现在,我们可以在命令行中输入一些消息,这些消息都将被发布给demo: hello world 5. 到此,我们已经建好了一个Kafka数据源,并发布了一些消息。先不要停止上面producer的进程,让它保 4 | 2. 快速入门
分享到:
收藏