回复:keyby的乱序处理
Hi, watermark 可以在 keyBy 后分配,但是最好紧跟 SourceFunction。经过 KeyBy 或其他分配策略,可能导致数据更大的延迟(EventTime)。 “想做key化的乱序处理” 这句没太理解,麻烦解释下。 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2020年03月30日 20:58,tingli ke 写道: 请教一个问题:kafka-per-partition 的watermark的分配,可以在keyby之后分配吗,想做key化的乱序处理能支持吗
Flink(≥1.9) Table/SQL Trigger
Hi,all: 我记得 Flink ( ≥1.9) 的 SQL/Table 是不支持 CountTrigger.of(1),这种自定义Trigger的吧 请问对于 Flink ( ≥1.9) 的 SQL/Table 如何实现自定义 Trigger?比如 CountTrigger (per-record Trigger),ContinuousEventTimeTrigger(specifical-time Trigger) 等。 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制
????????????????????????????????
??Watermarkbtw?? | | Jimmy Wong | | wangzmk...@163.com | ?? ??2020??02??27?? 14:34??<1624209...@qq.com> ?? ?? //??json??LogBean SingleOutputStreamOperator
回复: Flink ReduceFunction 没有数据发送到下游
Hi, ReduceFunction实现如下: new ReduceFunction() { @Override public Order reduce(Order o1, Order o2) throws Exception { LOGGER.error("reduce=>{}", o1); return new Order(o1.getId(), o1.getAct() + o2.getAct(), o1.getTimestamp()); } } | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2020年02月26日 11:07,zhisheng 写道: 可以发下你的 ReduceFunction 是咋写的 Jimmy Wong 于2020年2月26日周三 上午10:37写道: Hi,All: 请教一下,我用一个 Flink ReduceFunction 计算,但是发送到下游的数据不变了,而上游一直有数据过来,请问会是啥原因,谢谢! | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制
Flink ReduceFunction 没有数据发送到下游
Hi,All: 请教一下,我用一个 Flink ReduceFunction 计算,但是发送到下游的数据不变了,而上游一直有数据过来,请问会是啥原因,谢谢! | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制
??????countWindow??????????
??windowwindow?? | | Jimmy Wong | | wangzmk...@163.com | ?? ??2019??12??12?? 19:07??cs<58683...@qq.com> ?? ??countWindow
回复:窗口去重
谢谢大家,我想到了解决方案: 情景一:可以每来一条数据就Trigger一次计算,然后再Window计算完的时候,清除状态 情景二:确实要等窗口计算完 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2019年12月11日 16:26,yanggang_it_job 写道: 我觉得可以这样处理:1:首先把你的stream流注册为表(不管是一个还是多个stream)2:然后对这个表使用FLINKSQL进行业务表达3:最后使用FLINK SQL提供的开窗函数指定想要去重的字段注意:控制state的大小参考文档:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sql.html#deduplication 在 2019-12-11 15:53:00,"Jimmy Wong" 写道: 属于不同的window,是window内去重,window间不去重 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2019年12月11日 12:08,梁溪 写道: 去重了为什么还会有两个2 | | 梁溪 | | 邮箱:lx_la...@163.com | 签名由 网易邮箱大师 定制 在2019年12月11日 11:19,Jimmy Wong 写道: Hi, Yuan,Youjun 谢谢。 你这种方案是 SQL 的角度吧,如果用 DataStream 算子要怎么处理呢? | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2019年12月11日 09:04,Yuan,Youjun 写道: 第一种情况,用firstvalue这种聚合函数; 第二种情况,用min聚合函数,然后group by id,是不是就是你要的结果? -邮件原件- 发件人: Jimmy Wong 发送时间: Tuesday, December 10, 2019 4:40 PM 收件人: user-zh@flink.apache.org 主题: 窗口去重 Hi,All: 请教一个问题,现在有个实时场景:需要对每 5 分钟内数据进行去重,然后 Sink。 比如: 数据 {ts: 2019-12-10 16:24:00 id: 1} {ts: 2019-12-10 16:22:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:21:00 id: 1} {ts: 2019-12-10 16:29:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} {ts: 2019-12-10 16:26:00 id: 2} 第一种情景,不考虑时间去重,结果如下: {ts: 2019-12-10 16:24:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:29:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} 第二种情景,考虑时间去重,结果如下: {ts: 2019-12-10 16:21:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:26:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} 请教下,对于上面两种情景,分别有什么高效实时的解决方案么, 谢谢?我想了一下用 5min 窗口,和 ProcessWindowFunction 可以解决,但是 ProcessWindowFunction 要缓存 5min 的窗口数据,但是有延迟。 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制
回复:窗口去重
属于不同的window,是window内去重,window间不去重 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2019年12月11日 12:08,梁溪 写道: 去重了为什么还会有两个2 | | 梁溪 | | 邮箱:lx_la...@163.com | 签名由 网易邮箱大师 定制 在2019年12月11日 11:19,Jimmy Wong 写道: Hi, Yuan,Youjun 谢谢。 你这种方案是 SQL 的角度吧,如果用 DataStream 算子要怎么处理呢? | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2019年12月11日 09:04,Yuan,Youjun 写道: 第一种情况,用firstvalue这种聚合函数; 第二种情况,用min聚合函数,然后group by id,是不是就是你要的结果? -邮件原件- 发件人: Jimmy Wong 发送时间: Tuesday, December 10, 2019 4:40 PM 收件人: user-zh@flink.apache.org 主题: 窗口去重 Hi,All: 请教一个问题,现在有个实时场景:需要对每 5 分钟内数据进行去重,然后 Sink。 比如: 数据 {ts: 2019-12-10 16:24:00 id: 1} {ts: 2019-12-10 16:22:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:21:00 id: 1} {ts: 2019-12-10 16:29:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} {ts: 2019-12-10 16:26:00 id: 2} 第一种情景,不考虑时间去重,结果如下: {ts: 2019-12-10 16:24:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:29:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} 第二种情景,考虑时间去重,结果如下: {ts: 2019-12-10 16:21:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:26:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} 请教下,对于上面两种情景,分别有什么高效实时的解决方案么, 谢谢?我想了一下用 5min 窗口,和 ProcessWindowFunction 可以解决,但是 ProcessWindowFunction 要缓存 5min 的窗口数据,但是有延迟。 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制
回复: 窗口去重
Hi, Yuan,Youjun 谢谢。 你这种方案是 SQL 的角度吧,如果用 DataStream 算子要怎么处理呢? | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2019年12月11日 09:04,Yuan,Youjun 写道: 第一种情况,用firstvalue这种聚合函数; 第二种情况,用min聚合函数,然后group by id,是不是就是你要的结果? -邮件原件- 发件人: Jimmy Wong 发送时间: Tuesday, December 10, 2019 4:40 PM 收件人: user-zh@flink.apache.org 主题: 窗口去重 Hi,All: 请教一个问题,现在有个实时场景:需要对每 5 分钟内数据进行去重,然后 Sink。 比如: 数据 {ts: 2019-12-10 16:24:00 id: 1} {ts: 2019-12-10 16:22:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:21:00 id: 1} {ts: 2019-12-10 16:29:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} {ts: 2019-12-10 16:26:00 id: 2} 第一种情景,不考虑时间去重,结果如下: {ts: 2019-12-10 16:24:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:29:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} 第二种情景,考虑时间去重,结果如下: {ts: 2019-12-10 16:21:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:26:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} 请教下,对于上面两种情景,分别有什么高效实时的解决方案么, 谢谢?我想了一下用 5min 窗口,和 ProcessWindowFunction 可以解决,但是 ProcessWindowFunction 要缓存 5min 的窗口数据,但是有延迟。 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制
窗口去重
Hi,All: 请教一个问题,现在有个实时场景:需要对每 5 分钟内数据进行去重,然后 Sink。 比如: 数据 {ts: 2019-12-10 16:24:00 id: 1} {ts: 2019-12-10 16:22:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:21:00 id: 1} {ts: 2019-12-10 16:29:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} {ts: 2019-12-10 16:26:00 id: 2} 第一种情景,不考虑时间去重,结果如下: {ts: 2019-12-10 16:24:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:29:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} 第二种情景,考虑时间去重,结果如下: {ts: 2019-12-10 16:21:00 id: 1} {ts: 2019-12-10 16:23:00 id: 2} {ts: 2019-12-10 16:26:00 id: 2} {ts: 2019-12-10 16:27:00 id: 3} 请教下,对于上面两种情景,分别有什么高效实时的解决方案么, 谢谢?我想了一下用 5min 窗口,和 ProcessWindowFunction 可以解决,但是 ProcessWindowFunction 要缓存 5min 的窗口数据,但是有延迟。 | | Jimmy Wong | | wangzmk...@163.com | 签名由网易邮箱大师定制
Re:Re: Kafka 与 extractly-once
Hi,我的理解是这样的:这个问题是由于 source 的重放,导致 Flink 内部就重复计算,并且会传到下游,最终反映在结果上,或者说这种操作不能保证内部 Extractly-Once?比如在 [8:00,8:05) 这 5 分钟之内,在 8:03 某个 task 挂了,然后又重新拉起。这时候从 checkpoint 的恢复获得的是这 8:00 分钟之前的 Kafka offset,但是 [8:00,8:03) 之内的消息已经消费,流向下游。重新拉起之后,由于某种原因 source 重放,那么这时候 [8:00,8:03) 的数据会再次被消费,并且会发往下游。 在 2019-09-09 16:01:48,"820129...@qq.com" <820129...@qq.com> 写道: sink 的精确一次需要外部系统的支持的, 比如 kafka 的事务性producer, 社区有一篇文章讲的很好, 可以看一下 https://ververica.cn/developers/exactly-once/ 820129...@qq.com 发件人: Jimmy Wong 发送时间: 2019-09-09 11:50 收件人: user-zh@flink.apache.org 主题: Kafka 与 extractly-once Hi,all: 请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从 checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证 Extractly-Once 呢? | | Jimmy | | wangzmk...@163.com | 签名由网易邮箱大师定制
Re:Re: Kafka 与 extractly-once
HI,能详细说下 “后端幂等消费” 的方案麽? 在 2019-09-09 14:37:55,"chang chan" 写道: >消息队列本身很难保证消息不重复 >exactly once 可以用 消息队列的 at least once + 后端幂等消费来实现 >另外不建议使用 kafka 事务, 会拉低消息消费的速度 > >Jimmy Wong 于2019年9月9日周一 上午11:50写道: > >> Hi,all: >> 请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从 >> checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5 >> 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证 >> Extractly-Once 呢? >> | | >> Jimmy >> | >> | >> wangzmk...@163.com >> | >> 签名由网易邮箱大师定制 >> >>
??????Kafka ?? extractly-once
Hi, ?? Extractly-Once | | Jimmy | | wangzmk...@163.com | ?? ??2019??09??9?? 14:31<454618...@qq.com> ?? exactly onceexactly once?? ?? ,??Spark/Flink/Kafka/DataFlow() - - https://zhuanlan.zhihu.com/p/77677075 ?? maqy -- -- ??:"Jimmy Wong"
Kafka 与 extractly-once
Hi,all: 请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从 checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5 分钟之内的消息已经消费,流向下游。重新拉起之后,source 重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证 Extractly-Once 呢? | | Jimmy | | wangzmk...@163.com | 签名由网易邮箱大师定制
回复: Flink SQL 时间问题
Hi: 时间你可以转成Long,关于UTC,你说要生成Table,这样的话如果用的是SQL,可以采用UDF进行转换 | | Jimmy | | wangzmk...@163.com | 签名由网易邮箱大师定制 在2019年09月3日 21:25,JingsongLee 写道: Hi: 1.是的,目前只能是UTC,如果你有计算要求,你可以考虑改变的业务的窗口时间。 2.支持long的,你输入是不是int才会报错的,具体报错的信息? Best, Jingsong Lee -- From:hb <343122...@163.com> Send Time:2019年9月3日(星期二) 10:44 To:user-zh Subject:Flink SQL 时间问题 使用kafka connectorDescriptor , 从kafka读取json格式数据, 生成Table ``` ... schema.field("_proctime", Types.SQL_TIMESTAMP()).proctime() schema .field("_rowtime", Types.SQL_TIMESTAMP()) .rowtime( new Rowtime() .timestampsFromField("eventTime") .watermarksPeriodicBounded(1000) ) ``` 问题1. 生成的 _proctime 处理时间字段, 结果显示的时区是UTC, 怎么调整成 +8时区. 问题2. eventTime 事件时间字段怎么支持Long类型. 我输入到kafka记录为 {"eventTime": 10, "id":1,"name":"hb"} 会提示 eventTime 字段类型问题
flink-1.9 打包问题
Hi,大家好,我用阿里的 settings.xml 打包 flink-1.9 的时候,使用的命令如下 > mvn clean install -DskipTests 但是,在打包结束是报错如下: > [ERROR] Failed to execute goal on project flink-avro-confluent-registry: > Could not resolve dependencies for project > org.apache.flink:flink-avro-confluent-registry:jar:1.9-SNAPSHOT: Failure to > find io.confluent:kafka-schema-registry-client:jar:3.3.1 in > http://maven.aliyun.com/nexus/content/groups/public was cached in the local > repository, resolution will not be reattempted until the update interval of > nexus-aliyun has elapsed or updates are forced -> [Help 1] 看上去是阿里云的 Maven 仓库 http://maven.aliyun.com/nexus 中没有 io.confluent:kafka-schema-registry-client:jar:3.3.1。 有同学知道具体的原因麽? 谢谢