![Page 1: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/1.jpg)
Flink在袋鼠云一站式大数据平台中的使用
Flink China Meetup 上海 - 2018年11月4日
杨思枢 · 袋鼠云 / 技术专家
![Page 2: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/2.jpg)
CONTENT
为什么要扩展Flink SQL
01
目录 >>如何实现流与维表的JOIN
02
https://github.com/DTStack/flinkStreamSQL开源地址:
后续的开发计划
03
![Page 3: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/3.jpg)
01为什么要扩展FlinkSQL
![Page 4: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/4.jpg)
实时计算完全SQL化
![Page 5: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/5.jpg)
在实时计算的世界里不只是流与流的JOIN,还需要流与维表的JOIN
Kafka Kafka
Join
KafkaMysql,Hbase
….
Join
维表流流流
![Page 6: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/6.jpg)
FLinkSQL不支持流与维表JOIN这么办?
修改Flink源码 扩展FlinkSQL?
![Page 7: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/7.jpg)
1. 对Flink的源码改动的地方比较多,无法保证对其他的功能带来影响,要做额外的测试工作
2. 除非合并到社区版本,不然后续合并社区代码是比较大的工作量
修改Flink源码带来的问题
![Page 8: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/8.jpg)
02如何实现流与维表的JOIN
![Page 9: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/9.jpg)
DEMO SQLinsert into
MyResultselect
d.channel, d.info
from ( select a.*,b.infofrom
MyTable a join sideTable b
on a.channel=b.namewhere a.channel = 'xc2’
and a.pv=10 ) as d
![Page 10: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/10.jpg)
Calcite解析Insert into语句,拆分出子语句
1. select a.*,b.info from MyTable a join sideTable b on a.channel=b.namewhere a.channel = 'xc2' and a.pv=10
2. select d.channel, d.info from d
3. insert into MyResult
![Page 11: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/11.jpg)
Calcite继续解析select语句old: select a.*,b.info from MyTable a join sideTable b on a.channel=b.namewhere a.channel = 'xc2' and a.pv=10
判断right table 是否是维表(维表只能是右表)
如果是拆分出left table(select * from MyTable )生成 A
把维表转换成AsyncFunction或者RichFlatMapFunction生成 B
CREATE TABLE sideTable( cf:name varchar as name, cf:info varchar as info, PRIMARY KEY(name), PERIOD FOR SYSTEM_TIME )WITH(type ='hbase’, zookeeperQuorum ='rdos1:2181',
zookeeperParent ='/hbase', tableName ='workerinfo’, cache ='LRU’,
cacheSize ='10000’,cacheTTLMs ='60000’,parallelism ='1' );
![Page 12: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/12.jpg)
AsyncDataStream.orderedWait(A, B, Timeout, TimeUnit)或A.flatMap(B)生成C
生成新的SQL(Select name,channel,pv,xctime,info from C where channel = ‘xc2’ and pv=10)
![Page 13: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/13.jpg)
LRU维表的实现
RichAsyncFunction
open(Configuration)
asyncInvoke(Row, ResultFuture<Row> )
close()
LRU维表
继承
![Page 14: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/14.jpg)
Async I/O简介
Async I/O 是由阿里巴巴贡献给社区的,于1.2版本引入,主要目的是为了解决与外部系统交互时网络延迟成为了系统瓶颈的问题。
![Page 15: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/15.jpg)
ALL维表实现
RichFlatMapFunctionvoid flatMap(IN value, Collector<OUT> out)
ALL维表
继承
![Page 16: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/16.jpg)
03后续的开发计划
![Page 17: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/17.jpg)
后续的开发计划
1.中间临时表(视图)功能
2.性能指标采集到Prometheus
3.维表快照功能
4.redis维表,结果表功能
5.mongodb维表,结果表功能
6.用SQL实现CEP
![Page 18: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/18.jpg)
公司简介
![Page 19: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能](https://reader036.vdocuments.net/reader036/viewer/2022071110/5fe5106b90d28f1f4b153eab/html5/thumbnails/19.jpg)
关注袋鼠云技术团队
回复“10”获取PPT资料