java - Java 中的 Spark 自定义分区

标签 java apache-spark partition

我想在 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/

相关文章:

java - 错误 SparkContext : Error initializing SparkContext. 。 IntelliJ 和 Scala

hadoop - 使用 Spark 多次写入 hadoop 分布式文件系统

r - 使用 r 中的日期变量获取最近的观察结果

scala - 如何检查 Spark Graphx 图中是否存在边

linux - 在 bash 中搜索特定的文件系统

java - Java 中是否有用于变形图像(或处理)的库?

java - Scanner#nextLine() 留下剩余的换行符

Java 序列化 vs JSON vs XML

java - 如何检索数据库中最后插入的值?

apache-spark - Spark 中的一类分类模型