回复:keyby的乱序处理

2020-03-30 文章 Jimmy Wong
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

2020-03-30 文章 Jimmy Wong
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
|
签名由网易邮箱大师定制



????????????????????????????????

2020-02-27 文章 Jimmy Wong
??Watermarkbtw??


| |
Jimmy Wong
|
|
wangzmk...@163.com
|
??


??2020??02??27?? 14:34??<1624209...@qq.com> ??
??
//??json??LogBean
   SingleOutputStreamOperator

回复: Flink ReduceFunction 没有数据发送到下游

2020-02-25 文章 Jimmy Wong
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 没有数据发送到下游

2020-02-25 文章 Jimmy Wong
Hi,All:
请教一下,我用一个 Flink ReduceFunction 计算,但是发送到下游的数据不变了,而上游一直有数据过来,请问会是啥原因,谢谢!




| |
Jimmy Wong
|
|
wangzmk...@163.com
|
签名由网易邮箱大师定制



??????countWindow??????????

2019-12-12 文章 Jimmy Wong
 
??windowwindow??


| |
Jimmy Wong
|
|
wangzmk...@163.com
|
??


??2019??12??12?? 19:07??cs<58683...@qq.com> ??
??countWindow

回复:窗口去重

2019-12-12 文章 Jimmy Wong
谢谢大家,我想到了解决方案:
情景一:可以每来一条数据就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
|
签名由网易邮箱大师定制



回复:窗口去重

2019-12-10 文章 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
|
签名由网易邮箱大师定制



回复: 窗口去重

2019-12-10 文章 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
|
签名由网易邮箱大师定制



窗口去重

2019-12-10 文章 Jimmy Wong
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

2019-09-09 文章 Jimmy Wong
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

2019-09-09 文章 Jimmy Wong
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

2019-09-09 文章 Jimmy Wong
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

2019-09-08 文章 Jimmy Wong
Hi,all:
请教一下,我设置 checkpoint 的时间是 5 分钟,如果在这 5 分钟之内,某个 task 挂了,然后又重新拉起。我是不是可以理解为这时候从 
checkpoint 的数据获得的是这 5 分钟之前的 Kafka offset,但是这 5 分钟之内的消息已经消费,流向下游。重新拉起之后,source 
重放,那么这时候这 5 分钟的数据会再次被消费麽?如果再次消费,那么怎么保证 Extractly-Once 呢?
| |
Jimmy
|
|
wangzmk...@163.com
|
签名由网易邮箱大师定制



回复: Flink SQL 时间问题

2019-09-03 文章 Jimmy Wong
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 打包问题

2019-08-23 文章 Jimmy Wong
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。


有同学知道具体的原因麽?


谢谢