gpt4 book ai didi

scala - Flink 自定义分区功能

转载 作者:行者123 更新时间:2023-12-04 18:00:52 26 4
gpt4 key购买 nike

我在 Flink 上使用 Scala 和 DataSet API。
我想跨节点重新分区我的数据。 Spark 有一个功能可以让用户使用给定的 numberOfPartitions 参数( link )重新分区数据,我相信 Flink 不支持这样的功能。
因此,我想通过实现自定义分区功能来实现这一点。

我的数据是 DataSet(Double,SparseVector) 类型
来自数据的示例行:

(1.0 SparseVector((2024,1.0), (2025,1.0), (2030,1.0), (2045,1.0), (2046,1.41), (2063,1.0), (2072,1.0), (3031,1.0), (3032,1.0), (4757,1.0), (4790,1.0), (177196,1.0), (177197,0.301), (177199,1.0), (177202,1.0), (1544177,1.0), (1544178,1.0), (1544179,1.0), (1654031,1.0), (1654190,1.0), (1654191,1.0), (1654192,1.0), (1654193,1.0), (1654194,1.0), (1654212,1.0), (1654237,1.0), (1654238,1.0)))

由于我的“Double”是二进制(1 或 -1),我想根据 SparceVector 的长度对数据进行分区。
我的自定义分区器如下:
class myPartitioner extends Partitioner[SparseVector]
{
override def partition(key: SparseVector, numPartitions: Int): Int = {
key.size % numPartitions
}
}

我称这个自定义分区器如下:
data.partitionCustom(new myPartitioner(),1)

有人可以帮助我理解在 Scala 中调用 myPartitioner 函数时如何将分区数指定为“numPartitions”参数。

谢谢你。

最佳答案

在 flink 中你可以定义 setParallelism对于单个操作符或使用 enviornment.setParallelism 的所有操作符.我希望这个link会帮助你。

关于scala - Flink 自定义分区功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190483/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com