【发布时间】:2016-02-25 19:54:45
【问题描述】:
我在某处读到,对于作用于单个 RDD 的操作,例如 reduceByKey(),在预分区 RDD 上运行将导致每个键的所有值都在单个机器上本地计算,只需要从每个工作节点发送回主节点的最终局部缩减值。这意味着我必须声明一个分区器,例如:
val sc = new SparkContext(...)
val userData = sc.sequenceFile[UserID, UserInfo]("hdfs://...")
.partitionBy(new HashPartitioner(100)) // Create 100 partitions
.persist()
为了让reduceByKey 像我之前解释的那样工作。
我的问题是,如果我想使用 reduceByKey(最佳),我是否需要每次都声明一个分区器,还是没有必要。
【问题讨论】:
标签: scala apache-spark rdd partitioning reduce