我想在 Spark 中编写一个自定义分区器,并且我正在使用 Java。
但是我注意到javaRDD类(或Dataset类)没有像scala中那样的partitionBy(Partitioner)方法。只有 javaPairRDD 可以。如果没有这种方法,我该如何对 RDD 或数据集进行分区?
最佳答案
How am i supposed to partition RDDs or Datasets without this method?
你不应该:
数据集
没有Partitioner
的公共(public)概念。相反,您使用repartition
方法,该方法采用分区数量和可选的列
列表。分区方法本身不可配置(它使用带有 Murmur Hash 的哈希分区)。RDD
,除了“PairRDD”(Java 中的JavaPairRDD
,Scala 中的RDD[(_, _)]
)之外,根本无法重新分区。如果您想重新分区其他RDD
,您必须先将其转换为PairRDD
。如果您没有好的选择,可以使用null
作为值,使用记录作为键。
关于java - Java 中的 Spark 自定义分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47501761/