Est Spark zipWithIndex sécurité avec en parallèle la mise en œuvre?
Si j'ai un fichier, et j'ai fait un RDD zipWithIndex par ligne,
([row1, id1001, name, address], 0)
([row2, id1001, name, address], 1)
...
([row100000, id1001, name, address], 100000)
Vais-je être capable d'obtenir le même ordre d'index si je recharge le fichier? Puisqu'il s'exécute en parallèle, d'autres lignes peuvent être partitionnées différemment?
OriginalL'auteur sophie | 2015-08-06
Vous devez vous connecter pour publier un commentaire.
RDD
s peuvent être triés, et ainsi de faire un ordre. Cette commande est utilisée pour créer l'index avec.zipWithIndex()
.Pour obtenir le même ordre à chaque fois cela dépend de la nature des précédents appels sont en train de faire dans votre programme. Les docs mentionner que
.groupBy()
peut détruire commande ou de générer différents rangements. Il peut y avoir d'autres appels qui font cela.Je suppose que tu peux toujours faire appel à
.sortBy()
avant d'appeler.zipWithIndex()
si vous avez besoin de garantir un classement spécifique.C'est expliqué dans le
.zipWithIndex() scala API docs
le tri est fait dans les travailleurs, et non pas le pilote. Si, après la lecture de l'API docs, vous n'êtes pas certain de ce qui va arriver, alors vous devriez le tester en exécutant quelques fois et spot de vérifier les éléments à certains numéros d'index. Vous pouvez le faire sans le chargement de toutes les données dans le pilote, par l'aide .filtre() avec une fonction anonyme qui donne de vrai lorsque le numéro de ligne correspondant à certains ligne particulière, à l'instar de la ligne 43, et par la suite avec une .(1) pour le porter qu'un morceau de données pour le pilote.
OriginalL'auteur Paul