可以考虑自己实现一个udf ,使用bitmap或者hyperloglog去实现。


原始邮件
发件人:[email protected]
收件人:[email protected]
发送时间:2020年3月20日(周五) 11:44
主题:Re: flink sql 去重算法


hi, 我发现我们生产有些使用 SQL 的 count distinct 去做去重,当作业跑了很久,作业的 Checkpoint state 
很大(我这周就遇到过一个差不多 400G 的,导致 Checkpoint 很容易超时,并且可能会对 HDFS 
集群的网卡也有一定的压力),我看官网文档有介绍说使用 query_configuration 
">https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/streaming/query_configuration.html
 ,除此之外不清楚大家是否还有什么其他好的解决方法? Benchao Li [email protected] 于2020年3月20日周五 
上午9:50写道:  Hi hiliuxg,   count distinct 用的MapVIew来做的去重:  
在batch场景下,MapView的底层实现就是HashMap;  
在streaming场景下,MapView的底层实现是MapState,因为必须要用到state+cp,才能保证任务重启后状态不会丢失。   hiliuxg 
[email protected] 于2020年3月19日周四 下午11:31写道:    hi all:   请问flink sqlnbsp; 
count(disitinct)nbsp; 底层的算法是怎样的? 是bitmap ?   还是简单通过java的set容器去重的呢?     --   
Benchao Li  School of Electronics Engineering and Computer Science, Peking 
University  Tel:+86-15650713730  Email: [email protected]; 
[email protected]

回复