Comment partition de RDD par clé dans l'Allumage?

Étant donné que la HashPartitioner docs disent:

[HashPartitioner] met en œuvre de hachage basée sur le partitionnement à l'aide de Java
Objet.hashCode.

Dire que je veux partition DeviceData par son kind.

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

Serait-il correct de la partition RDD[DeviceData] par l'écrasement de la deviceData.hashCode() méthode et l'utilisation que le hashcode de kind?

Mais étant donné que HashPartitioner prend un certain nombre de partitions paramètre je suis confus quant à savoir si j'ai besoin de savoir le nombre de types à l'avance et qu'advient-il si il existe plusieurs types de partitions?

Est-il exact que si j'écris des données partitionnées sur le disque, il restera partitionné lors de la lecture?

Mon but est d'appeler

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

Et ont seulement DeviceData's de la même kind de la valeur de l'itérateur.

InformationsquelleAutor BAR | 2015-09-12