Wie partition RDD durch Schlüssel in der Funke?

Gegeben, dass die HashPartitioner docs sagen:

[HashPartitioner] implementiert eine hash-basierte Partitionierung mit Java
Objekt.hashCode.

Sagen, ich will die partition DeviceData durch seine kind.

case class DeviceData(kind: String, time: Long, data: String)

Ist es richtig zu partition eine RDD[DeviceData] durch überschreiben der deviceData.hashCode() Methode, und verwenden Sie nur den hashcode von kind?

Aber angesichts der Tatsache, dass HashPartitioner nimmt eine Reihe von Partitionen-parameter bin ich verwirrt, ob ich wissen muss, um die Zahl der Arten im Voraus und was passiert, wenn es mehr Arten als Partitionen?

Ist es korrekt, dass wenn ich Schreibe partitioniert Daten auf der Festplatte erhalten bleiben partitioniert, wenn Sie Lesen?

Mein Ziel ist zu nennen,

  deviceDataRdd.foreachPartition(d: Iterator[DeviceData] => ...)

Haben und nur DeviceData's von der gleichen kind Wert im iterator.

InformationsquelleAutor BAR | 2015-09-12
Schreibe einen Kommentar