在Apache Flink中使用自定义分区时,我想将数据集的一些元素分配给多个分区。目前,我试图复制这些元素,并将每个元素分配给一个集群。我想知道有什么办法吗?如果不是,复制数据集子集的有效方法是什么?
为了生成重叠的分区,首先必须复制元素。假设您知道要复制哪些元素,则可以使用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)