代码之家  ›  专栏  ›  技术社区  ›  Manos Ntoulias

java中的Spark自定义分区

  •  2
  • Manos Ntoulias  · 技术社区  · 8 年前

    我想在spark中编写一个自定义分区器,我正在研究java。

    然而,我注意到javaRDD类(或Dataset类)没有像scala中那样的partitionBy(Partitioner)方法。只有JavaPairDD可以。如果没有这种方法,我该如何对RDD或数据集进行分区?

    1 回复  |  直到 8 年前
        1
  •  4
  •   Community Mohan Dere    8 年前

    如果没有这种方法,我该如何对RDD或数据集进行分区?

    你不应该:

    • Datasets 没有公共概念 Partitioner . 相反,您使用 repartition 方法,该方法获取分区数和 Columns . 分区方法本身是不可配置的(它使用杂音哈希进行哈希分区)。

    • RDDs ,而非“PAIRDDS”( JavaPairRDD 在Java中, RDD[(_, _)] 在Scala中)根本无法重新分区。如果要重新划分其他 RDD 你必须将其转换为 PairRDD 第一如果你没有好的选择,你可以使用 null 作为值,记录作为键。

    推荐文章