java 中的 Spark 自定义分区

Spark Custom Partitioning in java

我想在 spark 中编写自定义分区程序,我正在研究 java。

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

How am i supposed to partition RDDs or Datasets without this method?

你应该不会:

  • Datasets 没有 public 的 Partitioner 概念。相反,您使用 repartition 方法,该方法采用分区数和 Columns 的可选列表。分区方法本身是不可配置的(它使用带有 Murmur Hash 的哈希分区)。

  • RDDs,除了 "PairRDDs"(Java 中的 JavaPairRDD,Scala 中的 RDD[(_, _)])根本无法重新分区。如果你想重新分区其他 RDD 你必须先将它转换为 PairRDD。如果你没有好的选择,你可以使用 null 作为值,记录作为键。