flink在袋鼠云一站式大数...

19
Flink在袋鼠云一站式大数 据平台中的使用 Flink China Meetup 上海 - 2018年11月4日 杨思枢 · 袋鼠云 / 技术专家

Upload: others

Post on 03-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

Flink在袋鼠云一站式大数据平台中的使用

Flink China Meetup 上海 - 2018年11月4日

杨思枢 · 袋鼠云 / 技术专家

Page 2: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

CONTENT

为什么要扩展Flink SQL

01

目录 >>如何实现流与维表的JOIN

02

https://github.com/DTStack/flinkStreamSQL开源地址:

后续的开发计划

03

Page 3: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

01为什么要扩展FlinkSQL

Page 4: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

实时计算完全SQL化

Page 5: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

在实时计算的世界里不只是流与流的JOIN,还需要流与维表的JOIN

Kafka Kafka

Join

KafkaMysql,Hbase

….

Join

维表流流流

Page 6: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

FLinkSQL不支持流与维表JOIN这么办?

修改Flink源码 扩展FlinkSQL?

Page 7: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

1. 对Flink的源码改动的地方比较多,无法保证对其他的功能带来影响,要做额外的测试工作

2. 除非合并到社区版本,不然后续合并社区代码是比较大的工作量

修改Flink源码带来的问题

Page 8: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

02如何实现流与维表的JOIN

Page 9: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

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的源码改动的地方比较多,无法保证对其他的功能

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的源码改动的地方比较多,无法保证对其他的功能

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的源码改动的地方比较多,无法保证对其他的功能

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的源码改动的地方比较多,无法保证对其他的功能

LRU维表的实现

RichAsyncFunction

open(Configuration)

asyncInvoke(Row, ResultFuture<Row> )

close()

LRU维表

继承

Page 14: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

Async I/O简介

Async I/O 是由阿里巴巴贡献给社区的,于1.2版本引入,主要目的是为了解决与外部系统交互时网络延迟成为了系统瓶颈的问题。

Page 15: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

ALL维表实现

RichFlatMapFunctionvoid flatMap(IN value, Collector<OUT> out)

ALL维表

继承

Page 16: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

03后续的开发计划

Page 17: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

后续的开发计划

1.中间临时表(视图)功能

2.性能指标采集到Prometheus

3.维表快照功能

4.redis维表,结果表功能

5.mongodb维表,结果表功能

6.用SQL实现CEP

Page 18: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

公司简介

Page 19: Flink在袋鼠云一站式大数 据平台中的使用assets.dtstack.com/2019Website/sources/pdf/Flink在袋鼠...1. 对Flink的源码改动的地方比较多,无法保证对其他的功能

关注袋鼠云技术团队

回复“10”获取PPT资料