apache Flink中重叠的分区

时间:2016-01-08 10:19:16

标签: apache-flink

在Apache Flink中使用自定义分区程序时,我想将数据集的一些元素分配给多个分区。目前,我尝试复制这些元素并将每个元素分配到一个集群。我想知道有没有办法这样做?如果不是重复数据集子集的有效方法是什么?

1 个答案:

答案 0 :(得分:4)

要生成重叠分区,首先必须复制元素。鉴于您知道要复制哪些元素,可以使用flatMap操作完成。由于您希望将重复的元素分配给不同的分区,因此最好从flatMap操作中分配分区ID。根据此ID,您可以应用分区步骤。

给定输入数据集input: DataSet[IN],您将生成一个重复数据集duplicated: DataSet[(Int, IN)],其中包含原始输入元素的元组及其对应的分区ID。之后,您可以在第一个元组字段上应用分区。

val duplicatedDS: DataSet[(Int, IN)] = input.flatMap(x => duplicateElement(x))
val partitioned = duplicatedDS.partitionByHash(0)