2016-01-08 43 views
3

在Apache Flink中使用自定義分區程序時,我想將數據集的某些元素分配給多個分區。目前我嘗試複製這些元素並將每個元素分配給一個集羣。我想知道有什麼方法可以這樣做嗎?如果不是什麼是複製數據集子集的有效方式?apache Flink中的重疊分區

回答

4

爲了生成重疊的分區,你首先必須複製你的元素。假定您知道哪些元素可以通過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)