flink 1.9 关于回撤流的问题

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

flink 1.9 关于回撤流的问题

star
大家好,


在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析




谢谢
Reply | Threaded
Open this post in threaded view
|

回复:flink 1.9 关于回撤流的问题

Yichao Yang
Hi
Flink 中RetractStream 是必须要sink支持update的,kafka消息队列本身是不支持update的,所以基于sink为kafka的程序是不能做RetractStream的。


Best,
Yichao Yang


------------------ 原始邮件 ------------------
发件人:&nbsp;"star"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月3日(星期三) 下午2:47
收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;

主题:&nbsp;flink 1.9 关于回撤流的问题



大家好,


在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析




谢谢
Reply | Threaded
Open this post in threaded view
|

Re: flink 1.9 关于回撤流的问题

godfrey he
hi star,
Flink 1.11 开始已经支持 table source 读取 retract 消息,update 消息。
目前支持 Debezium format,Canal format [1],其他的情况目前需要自己实现。


Best,
Godfrey

[1]
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=147427289#FLIP105:SupporttoInterpretChangeloginFlinkSQL(IntroducingDebeziumandCanalFormat)-CanalFormat


1048262223 <[hidden email]> 于2020年6月3日周三 下午2:59写道:

> Hi
> Flink 中RetractStream
> 是必须要sink支持update的,kafka消息队列本身是不支持update的,所以基于sink为kafka的程序是不能做RetractStream的。
>
>
> Best,
> Yichao Yang
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"star"<[hidden email]&gt;;
> 发送时间:&nbsp;2020年6月3日(星期三) 下午2:47
> 收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
>
> 主题:&nbsp;flink 1.9 关于回撤流的问题
>
>
>
> 大家好,
>
>
>
> 在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
> 问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析
>
>
>
>
> 谢谢
Reply | Threaded
Open this post in threaded view
|

回复: flink 1.9 关于回撤流的问题

star
感谢两位的回复,
转成回撤流的这个流其实是一张轻度汇总表,
例如,select year,month,day,province,sub_name,sum(amount),count(*) as cou from mytable group by year,month,day,province,sub_name;


后面有几十张实时报表依赖这个流 再进行汇总 计算;
我现在是把这个轻度汇总表转成了回撤流输出到了kafka里面,如果后面这几十张报表能够消费这个topic并转成table,就可以做后面到运算了。


不知道能不能转成这样到table?






------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"godfrey he"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月3日(星期三) 下午3:40
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: flink 1.9 关于回撤流的问题



hi star,
Flink 1.11 开始已经支持 table source 读取 retract 消息,update 消息。
目前支持 Debezium format,Canal format [1],其他的情况目前需要自己实现。


Best,
Godfrey

[1]
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=147427289#FLIP105:SupporttoInterpretChangeloginFlinkSQL(IntroducingDebeziumandCanalFormat)-CanalFormat


1048262223 <[hidden email]&gt; 于2020年6月3日周三 下午2:59写道:

&gt; Hi
&gt; Flink 中RetractStream
&gt; 是必须要sink支持update的,kafka消息队列本身是不支持update的,所以基于sink为kafka的程序是不能做RetractStream的。
&gt;
&gt;
&gt; Best,
&gt; Yichao Yang
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"star"<[hidden email]&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年6月3日(星期三) 下午2:47
&gt; 收件人:&amp;nbsp;"[hidden email]"<[hidden email]&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;flink 1.9 关于回撤流的问题
&gt;
&gt;
&gt;
&gt; 大家好,
&gt;
&gt;
&gt;
&gt; 在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
&gt; 问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析
&gt;
&gt;
&gt;
&gt;
&gt; 谢谢
Reply | Threaded
Open this post in threaded view
|

Re: flink 1.9 关于回撤流的问题

LakeShen
Hi,

RetractStream 目前是无法输出到 kafka 的,因为 kafka 是 Append 模式。

不过你应该可以定义一个时间窗口 T ,滚动窗口的时间就是 T,然后聚合一次,输出到 kafka,后面都使用这个 kafka topic。

Best,
LakeShen

star <[hidden email]> 于2020年6月3日周三 下午4:31写道:

> 感谢两位的回复,
> 转成回撤流的这个流其实是一张轻度汇总表,
> 例如,select year,month,day,province,sub_name,sum(amount),count(*) as cou
> from mytable group by year,month,day,province,sub_name;
>
>
> 后面有几十张实时报表依赖这个流 再进行汇总 计算;
> 我现在是把这个轻度汇总表转成了回撤流输出到了kafka里面,如果后面这几十张报表能够消费这个topic并转成table,就可以做后面到运算了。
>
>
> 不知道能不能转成这样到table?
>
>
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"godfrey he"<[hidden email]&gt;;
> 发送时间:&nbsp;2020年6月3日(星期三) 下午3:40
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: flink 1.9 关于回撤流的问题
>
>
>
> hi star,
> Flink 1.11 开始已经支持 table source 读取 retract 消息,update 消息。
> 目前支持 Debezium format,Canal format [1],其他的情况目前需要自己实现。
>
>
> Best,
> Godfrey
>
> [1]
>
> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=147427289#FLIP105:SupporttoInterpretChangeloginFlinkSQL(IntroducingDebeziumandCanalFormat)-CanalFormat
>
>
> 1048262223 <[hidden email]&gt; 于2020年6月3日周三 下午2:59写道:
>
> &gt; Hi
> &gt; Flink 中RetractStream
> &gt;
> 是必须要sink支持update的,kafka消息队列本身是不支持update的,所以基于sink为kafka的程序是不能做RetractStream的。
> &gt;
> &gt;
> &gt; Best,
> &gt; Yichao Yang
> &gt;
> &gt;
> &gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
> &gt; 发件人:&amp;nbsp;"star"<[hidden email]&amp;gt;;
> &gt; 发送时间:&amp;nbsp;2020年6月3日(星期三) 下午2:47
> &gt; 收件人:&amp;nbsp;"[hidden email]"<[hidden email]
> &amp;gt;;
> &gt;
> &gt; 主题:&amp;nbsp;flink 1.9 关于回撤流的问题
> &gt;
> &gt;
> &gt;
> &gt; 大家好,
> &gt;
> &gt;
> &gt;
> &gt;
> 在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
> &gt; 问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析
> &gt;
> &gt;
> &gt;
> &gt;
> &gt; 谢谢
Reply | Threaded
Open this post in threaded view
|

回复: flink 1.9 关于回撤流的问题

star
目前就是使用的窗口模式,生产append流,没什么大的state。但是有些指标(如 distinct)是不能使用append流的;
后面的几十个任务基于这个append流分别聚合,每个任务都会有很大的状态,造成资源浪费。如果能在轻度汇总层就搞成一张流表;后面的任务就会轻松一些。




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"LakeShen"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月4日(星期四) 上午9:45
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: flink 1.9 关于回撤流的问题



Hi,

RetractStream 目前是无法输出到 kafka 的,因为 kafka 是 Append 模式。

不过你应该可以定义一个时间窗口 T ,滚动窗口的时间就是 T,然后聚合一次,输出到 kafka,后面都使用这个 kafka topic。

Best,
LakeShen

star <[hidden email]&gt; 于2020年6月3日周三 下午4:31写道:

&gt; 感谢两位的回复,
&gt; 转成回撤流的这个流其实是一张轻度汇总表,
&gt; 例如,select year,month,day,province,sub_name,sum(amount),count(*) as cou
&gt; from mytable group by year,month,day,province,sub_name;
&gt;
&gt;
&gt; 后面有几十张实时报表依赖这个流 再进行汇总 计算;
&gt; 我现在是把这个轻度汇总表转成了回撤流输出到了kafka里面,如果后面这几十张报表能够消费这个topic并转成table,就可以做后面到运算了。
&gt;
&gt;
&gt; 不知道能不能转成这样到table?
&gt;
&gt;
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"godfrey he"<[hidden email]&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年6月3日(星期三) 下午3:40
&gt; 收件人:&amp;nbsp;"user-zh"<[hidden email]&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: flink 1.9 关于回撤流的问题
&gt;
&gt;
&gt;
&gt; hi star,
&gt; Flink 1.11 开始已经支持 table source 读取 retract 消息,update 消息。
&gt; 目前支持 Debezium format,Canal format [1],其他的情况目前需要自己实现。
&gt;
&gt;
&gt; Best,
&gt; Godfrey
&gt;
&gt; [1]
&gt;
&gt; https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=147427289#FLIP105:SupporttoInterpretChangeloginFlinkSQL(IntroducingDebeziumandCanalFormat)-CanalFormat
&gt;
&gt;
&gt; 1048262223 <[hidden email]&amp;gt; 于2020年6月3日周三 下午2:59写道:
&gt;
&gt; &amp;gt; Hi
&gt; &amp;gt; Flink 中RetractStream
&gt; &amp;gt;
&gt; 是必须要sink支持update的,kafka消息队列本身是不支持update的,所以基于sink为kafka的程序是不能做RetractStream的。
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; Best,
&gt; &amp;gt; Yichao Yang
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&gt; &amp;gt; 发件人:&amp;amp;nbsp;"star"<[hidden email]&amp;amp;gt;;
&gt; &amp;gt; 发送时间:&amp;amp;nbsp;2020年6月3日(星期三) 下午2:47
&gt; &amp;gt; 收件人:&amp;amp;nbsp;"[hidden email]"<[hidden email]
&gt; &amp;amp;gt;;
&gt; &amp;gt;
&gt; &amp;gt; 主题:&amp;amp;nbsp;flink 1.9 关于回撤流的问题
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 大家好,
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; 在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
&gt; &amp;gt; 问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 谢谢
Reply | Threaded
Open this post in threaded view
|

Re:回复: flink 1.9 关于回撤流的问题

Michael Ran
In reply to this post by star
可以的吧。 你最好以json格式再次输出到kafka,这样flink 能直接接受这个流,json到table。当然 输出json 数据量会大点,不然直接输出,你后面自己弄个序列化解析也行
在 2020-06-03 16:31:15,"star" <[hidden email]> 写道:

>感谢两位的回复,
>转成回撤流的这个流其实是一张轻度汇总表,
>例如,select year,month,day,province,sub_name,sum(amount),count(*) as cou from mytable group by year,month,day,province,sub_name;
>
>
>后面有几十张实时报表依赖这个流 再进行汇总 计算;
>我现在是把这个轻度汇总表转成了回撤流输出到了kafka里面,如果后面这几十张报表能够消费这个topic并转成table,就可以做后面到运算了。
>
>
>不知道能不能转成这样到table?
>
>
>
>
>
>
>------------------&nbsp;原始邮件&nbsp;------------------
>发件人:&nbsp;"godfrey he"<[hidden email]&gt;;
>发送时间:&nbsp;2020年6月3日(星期三) 下午3:40
>收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
>主题:&nbsp;Re: flink 1.9 关于回撤流的问题
>
>
>
>hi star,
>Flink 1.11 开始已经支持 table source 读取 retract 消息,update 消息。
>目前支持 Debezium format,Canal format [1],其他的情况目前需要自己实现。
>
>
>Best,
>Godfrey
>
>[1]
>https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=147427289#FLIP105:SupporttoInterpretChangeloginFlinkSQL(IntroducingDebeziumandCanalFormat)-CanalFormat
>
>
>1048262223 <[hidden email]&gt; 于2020年6月3日周三 下午2:59写道:
>
>&gt; Hi
>&gt; Flink 中RetractStream
>&gt; 是必须要sink支持update的,kafka消息队列本身是不支持update的,所以基于sink为kafka的程序是不能做RetractStream的。
>&gt;
>&gt;
>&gt; Best,
>&gt; Yichao Yang
>&gt;
>&gt;
>&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
>&gt; 发件人:&amp;nbsp;"star"<[hidden email]&amp;gt;;
>&gt; 发送时间:&amp;nbsp;2020年6月3日(星期三) 下午2:47
>&gt; 收件人:&amp;nbsp;"[hidden email]"<[hidden email]&amp;gt;;
>&gt;
>&gt; 主题:&amp;nbsp;flink 1.9 关于回撤流的问题
>&gt;
>&gt;
>&gt;
>&gt; 大家好,
>&gt;
>&gt;
>&gt;
>&gt; 在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
>&gt; 问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析
>&gt;
>&gt;
>&gt;
>&gt;
>&gt; 谢谢
Reply | Threaded
Open this post in threaded view
|

回复:flink 1.9 关于回撤流的问题

admin
In reply to this post by star
Hi,star
金竹老师发过一篇文章,重写了KafkaConnector的实现,支持upsert模式,可以参考下[1]


[1]https://mp.weixin.qq.com/s/MSs7HSaegyWWU3Fig2PYYA
| |
Sun.Zhu
|
|
[hidden email]
|
签名由网易邮箱大师定制


在2020年06月3日 14:47,star<[hidden email]> 写道:
大家好,


在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析




谢谢
Reply | Threaded
Open this post in threaded view
|

回复:flink 1.9 关于回撤流的问题

star
非常感谢,正是我想要的。也谢谢金竹老师的分享!




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Sun.Zhu"<[hidden email]&gt;;
发送时间:&nbsp;2020年6月7日(星期天) 凌晨0:02
收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
抄送:&nbsp;"[hidden email]"<[hidden email]&gt;;
主题:&nbsp;回复:flink 1.9 关于回撤流的问题



Hi,star
金竹老师发过一篇文章,重写了KafkaConnector的实现,支持upsert模式,可以参考下[1]


[1]https://mp.weixin.qq.com/s/MSs7HSaegyWWU3Fig2PYYA
| |
Sun.Zhu
|
|
[hidden email]
|
签名由网易邮箱大师定制


在2020年06月3日 14:47,star<[hidden email]&gt; 写道:
大家好,


在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析




谢谢
Reply | Threaded
Open this post in threaded view
|

Re: flink 1.9 关于回撤流的问题

Shengkai Fang
hi, 我对于使用upsert
kafka能够省state感到疑惑。金竹老师提供的实现只是丢掉了delete消息,你的下游表依旧需要手动去重才可以得到准确的结果才对啊。如果每个下游表都手动去重这样子还能省state吗?

star <[hidden email]> 于2020年6月8日周一 上午9:38写道:

> 非常感谢,正是我想要的。也谢谢金竹老师的分享!
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Sun.Zhu"<[hidden email]&gt;;
> 发送时间:&nbsp;2020年6月7日(星期天) 凌晨0:02
> 收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
> 抄送:&nbsp;"[hidden email]"<[hidden email]&gt;;
> 主题:&nbsp;回复:flink 1.9 关于回撤流的问题
>
>
>
> Hi,star
> 金竹老师发过一篇文章,重写了KafkaConnector的实现,支持upsert模式,可以参考下[1]
>
>
> [1]https://mp.weixin.qq.com/s/MSs7HSaegyWWU3Fig2PYYA
> | |
> Sun.Zhu
> |
> |
> [hidden email]
> |
> 签名由网易邮箱大师定制
>
>
> 在2020年06月3日 14:47,star<[hidden email]&gt; 写道:
> 大家好,
>
>
>
> 在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
> 问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析
>
>
>
>
> 谢谢
Reply | Threaded
Open this post in threaded view
|

Re: flink 1.9 关于回撤流的问题

godfrey he
可以用flink提供的“去重"语法来支持

[1]
https://ci.apache.org/projects/flink/flink-docs-master/zh/dev/table/sql/queries.html#%E5%8E%BB%E9%87%8D

Shengkai Fang <[hidden email]> 于2020年9月15日周二 下午4:02写道:

> hi, 我对于使用upsert
>
> kafka能够省state感到疑惑。金竹老师提供的实现只是丢掉了delete消息,你的下游表依旧需要手动去重才可以得到准确的结果才对啊。如果每个下游表都手动去重这样子还能省state吗?
>
> star <[hidden email]> 于2020年6月8日周一 上午9:38写道:
>
> > 非常感谢,正是我想要的。也谢谢金竹老师的分享!
> >
> >
> >
> >
> > ------------------&nbsp;原始邮件&nbsp;------------------
> > 发件人:&nbsp;"Sun.Zhu"<[hidden email]&gt;;
> > 发送时间:&nbsp;2020年6月7日(星期天) 凌晨0:02
> > 收件人:&nbsp;"[hidden email]"<[hidden email]&gt;;
> > 抄送:&nbsp;"[hidden email]"<[hidden email]&gt;;
> > 主题:&nbsp;回复:flink 1.9 关于回撤流的问题
> >
> >
> >
> > Hi,star
> > 金竹老师发过一篇文章,重写了KafkaConnector的实现,支持upsert模式,可以参考下[1]
> >
> >
> > [1]https://mp.weixin.qq.com/s/MSs7HSaegyWWU3Fig2PYYA
> > | |
> > Sun.Zhu
> > |
> > |
> > [hidden email]
> > |
> > 签名由网易邮箱大师定制
> >
> >
> > 在2020年06月3日 14:47,star<[hidden email]&gt; 写道:
> > 大家好,
> >
> >
> >
> >
> 在做实时统计分析的时候我将基础汇总层做成了一个回撤流(toRetractStream)输出到kafka里(因为后面很多实时报表依赖这个流,所以就输出了)
> > 问题是这个kafka里到回撤流还能转成flink 的RetractStream流吗,转成后我想注册成一张表,然后基于这个表再做聚合分析
> >
> >
> >
> >
> > 谢谢
>