4
關於生成代理鍵,第一步是獲取distinct,然後爲每個元組構建一個增量鍵。Flink在distinct()中使用了哪些魔法?如何生成代理鍵?
因此,我使用Java Set來獲取不同的元素,並且它沒有堆空間。 然後,我使用Flink的distinct(),它完全有效。
請問是什麼使這種差異?
另一個相關的問題是,Flink可以在mapper中生成代理鍵嗎?
關於生成代理鍵,第一步是獲取distinct,然後爲每個元組構建一個增量鍵。Flink在distinct()中使用了哪些魔法?如何生成代理鍵?
因此,我使用Java Set來獲取不同的元素,並且它沒有堆空間。 然後,我使用Flink的distinct(),它完全有效。
請問是什麼使這種差異?
另一個相關的問題是,Flink可以在mapper中生成代理鍵嗎?
Flink在內部執行GroupBy
後接ReduceGroup
運算符,其中reduce運算符僅返回該組的第一個元素。
GroupBy
通過排序數據完成。排序是在二進制數據表示上完成的(如果可能的話),但如果內存不足可能會溢出到磁盤。這blog post給出了一些有關這方面的見解。 GroupBy
和Sort
在Flink中是內存安全的,並且不會因OutOfMemoryError
而失敗。
您還可以使用DataSet.distinct(KeySelector ks)
對自定義密鑰執行截然不同的操作。密鑰選擇器基本上是生成自定義密鑰的MapFunction
。