【发布时间】:2015-09-12 22:18:49
【问题描述】:
鉴于 HashPartitioner 文档说:
[HashPartitioner] 使用 Java 实现基于哈希的分区 Object.hashCode.
假设我想通过kind 对DeviceData 进行分区。
case class DeviceData(kind: String, time: Long, data: String)
通过覆盖deviceData.hashCode() 方法并仅使用kind 的哈希码来分区RDD[DeviceData] 是否正确?
但是考虑到HashPartitioner 采用了一些分区参数,我很困惑是否需要提前知道种类的数量以及如果种类多于分区会发生什么?
如果我将分区数据写入磁盘,读取时它会保持分区状态是否正确?
我的目标是打电话
deviceDataRdd.foreachPartition(d: Iterator[DeviceData] => ...)
并且迭代器中只有具有相同kind 值的DeviceData。
【问题讨论】:
标签: scala apache-spark rdd