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
作为值,记录作为键。
我想在 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
作为值,记录作为键。