2017-01-25 1 views

Répondre

1

Doc dit .. A Partitioner that implements hash-based partitioning using Java's Object.hashCode

Oui. tu as raison. Donc, si la distribution des clés n'est pas uniforme, vous pouvez vous retrouver dans des situations où une partie de votre cluster est inactive. See

Sa votre responsabilité de veiller à ce que les clés sont répartis uniformément. (Cela signifie hashcode ne doit pas être le même)

Pour cela, vous devez mieux comprendre HashPartitioner et ce qu'il fait en interne.

Remarque: Le code de hachage de la clé sera simplement la clé elle-même. Le HashPartitioner le modifiera avec le nombre total de partitions. i.e hashcode Mod avec totnumpartions.

Ci-dessous Util méthode de classe est utilisée à cette fin par HashPartitioner

def nonNegativeMod(x: Int, mod: Int): Int = { 
    val rawMod = x % mod 
    rawMod + (if (rawMod < 0) mod else 0) 
} 
+0

Merci Ram, Il est instructif. – nikhil08

+0

Donc, vous voulez dire que nous devons écrire notre propre partition-er personnalisé pour diviser les clés entre toutes les partitions que nous avons? – nikhil08

+0

Pas besoin d'écrire un partitionneur personnalisé. Le hashcode des clés devrait être uniforme. Pour les clés multiples, le code de hachage ne doit pas être identique. –