Apache flink Flink在distinct()中使用了什么魔法?代理密钥是如何生成的?
关于生成代理键,第一步是获取distinct,然后为每个元组构建一个增量键 因此,我使用Java集合来获取不同的元素,这就占用了堆空间。 然后,我使用了Flink的distinct(),它完全有效 我能问一下这有什么不同吗Apache flink Flink在distinct()中使用了什么魔法?代理密钥是如何生成的?,apache-flink,Apache Flink,关于生成代理键,第一步是获取distinct,然后为每个元组构建一个增量键 因此,我使用Java集合来获取不同的元素,这就占用了堆空间。 然后,我使用了Flink的distinct(),它完全有效 我能问一下这有什么不同吗 另一个相关的问题是,Flink可以在mapper中生成代理密钥吗 Flink以GroupBy的形式在内部执行distinct(),然后执行ReduceGroup操作符,其中reduce操作符仅返回组的第一个元素 GroupBy是通过对数据进行排序来完成的。排序是在二进制数据表
另一个相关的问题是,Flink可以在mapper中生成代理密钥吗 Flink以
GroupBy
的形式在内部执行distinct()
,然后执行ReduceGroup
操作符,其中reduce操作符仅返回组的第一个元素
GroupBy
是通过对数据进行排序来完成的。排序是在二进制数据表示上进行的,如果可能的话,可以在内存中进行,但如果没有足够的内存可用,则可能溢出到磁盘。这给了我们一些见解GroupBy
和Sort
在Flink中是内存安全的,不会出现OutOfMemoryError
故障
您还可以使用DataSet.distinct(KeySelector ks)
对自定义键执行distinct。键选择器基本上是一个生成自定义键的MapFunction