3
在Apache Flink中使用自定義分區程序時,我想將數據集的某些元素分配給多個分區。目前我嘗試複製這些元素並將每個元素分配給一個集羣。我想知道有什麼方法可以這樣做嗎?如果不是什麼是複製數據集子集的有效方式?apache Flink中的重疊分區
在Apache Flink中使用自定義分區程序時,我想將數據集的某些元素分配給多個分區。目前我嘗試複製這些元素並將每個元素分配給一個集羣。我想知道有什麼方法可以這樣做嗎?如果不是什麼是複製數據集子集的有效方式?apache Flink中的重疊分區
爲了生成重疊的分區,你首先必須複製你的元素。假定您知道哪些元素可以通過flatMap
操作來完成。由於您要將重複的元素分配到不同的分區,因此最好從flatMap
操作中分配分區ID。基於此ID,您可以應用分區步驟。
給定一個輸入數據集input: DataSet[IN]
,您將生成一個包含原始輸入元素及其相應分區ID的元組的複製數據集duplicated: DataSet[(Int, IN)]
。之後,您可以在第一個元組字段上應用分區。
val duplicatedDS: DataSet[(Int, IN)] = input.flatMap(x => duplicateElement(x))
val partitioned = duplicatedDS.partitionByHash(0)