You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by 出发 <57...@qq.com> on 2020/03/20 03:52:29 UTC

回复: flink sql 去重算法

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




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"lucas.wu"<lucas.wu@xiaoying.com&gt;;
发送时间:&nbsp;2020年3月20日(星期五) 中午11:50
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

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



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


原始邮件
发件人:zhishengzhisheng2018@gmail.com
收件人:user-zhuser-zh@flink.apache.org
发送时间: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 libenchao@gmail.com 于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 736742057@qq.com 于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: libenchao@gmail.com; libenchao@pku.edu.cn