我想在spark中编写一个自定义分区器,我正在研究java。
然而,我注意到javaRDD类(或Dataset类)没有像scala中那样的partitionBy(Partitioner)方法。只有JavaPairDD可以。如果没有这种方法,我该如何对RDD或数据集进行分区?
如果没有这种方法,我该如何对RDD或数据集进行分区?
你不应该:
Datasets 没有公共概念 Partitioner . 相反,您使用 repartition 方法,该方法获取分区数和 Columns . 分区方法本身是不可配置的(它使用杂音哈希进行哈希分区)。
Datasets
Partitioner
repartition
Columns
RDDs ,而非“PAIRDDS”( JavaPairRDD 在Java中, RDD[(_, _)] 在Scala中)根本无法重新分区。如果要重新划分其他 RDD 你必须将其转换为 PairRDD 第一如果你没有好的选择,你可以使用 null 作为值,记录作为键。
RDDs
JavaPairRDD
RDD[(_, _)]
RDD
PairRDD
null