apache Flink 中的重叠分区
Overlapped partitions in apache Flink
在 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)
在 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)