2
votes

Pourquoi la répartition du Spark n'a pas équilibré les données en partitions?

>>> rdd = sc.parallelize(range(10), 2)
>>> rdd.glom().collect()
[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
>>> rdd.repartition(3).glom().collect()
[[], [0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
>>>
The first partition is empty? Why? I really appreciate you telling me the reasons.

1 commentaires

Craignez-vous que la première partition soit vide ou qu'une partition soit vide?


3 Réponses :


2
votes

Cela se produit parce que Spark ne mélange pas des éléments individuels mais plutôt des blocs de données - avec une taille de lot minimale égale à 10 .

Donc, si vous avez moins d'éléments que cela par partition, Spark ne séparera pas le contenu des partitions.


0 commentaires


0
votes

Il convient de noter que, comme Spark consiste uniquement à fonctionner à grande échelle, il est peu probable que ce scénario s'inquiète. Le plus proche que vous pouvez obtenir est des données biaisées. range donnera un partitionnement initial différent de la repartition qui utilisera le hachage. Le commentaire sur la taille du lot est également valide, mais moins pertinent en pratique.


0 commentaires