回复: flink sql 去重算法

classic Classic list List threaded Threaded
1 message Options
kcz
Reply | Threaded
Open this post in threaded view
|

回复: flink sql 去重算法

kcz
可否考虑放入Redis,借用Redis的bitmap活着hyperloglog




------------------ 原始邮件 ------------------
发件人:&nbsp;"lucas.wu"<[hidden email]&gt;;
发送时间:&nbsp;2020年3月20日(星期五) 中午11:50
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: flink sql 去重算法



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


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


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