我想用spark编写一个自定义分区程序,并且我正在编写java。
但是,我注意到,javaRDD类(或Dataset类)没有像scala中那样的partitionBy(分区)方法。只有javaPairRDD这样做。如果没有此方法,我应该如何划分RDD或数据集?
发布于 2017-11-26 22:55:00
如果没有此方法,我应该如何划分RDD或数据集?
你不应该:
Datasets没有Partitioner的公共概念。相反,您可以使用repartition方法,该方法接受分区数和Columns的可选列表。分区方法本身是不可配置的(它使用带有Murmur hash的散列分区)。RDDs,除了"PairRDDs“( Java中的JavaPairRDD,Scala中的RDD[(_, _)] )之外,根本不能再分区。如果您想重新划分其他RDD,则必须首先将其转换为PairRDD。如果您没有一个好的选择,您可以使用null作为值,使用记录作为键。https://stackoverflow.com/questions/47501761
复制相似问题