Quelle est la différence entre réduc- tion et reductionByKey dans Hadoop Spark en termes de fonctionnalités . Pourquoi reductionByKey est une transformation et réduction est une action.
Ceci est proche de la copie de ma réponse expliquant reductionByKey , mais je vais préciser la partie spécifique qui différencie les deux. Cependant, référez-vous à ma réponse pour un peu plus de détails sur les éléments internes de reduceByKey
.
En principe, reduce
doit extraire l'intégralité du jeu de données en un seul emplacement, car il se réduit à un valeur finale. reduceByKey
d'autre part est une valeur pour chaque clé. Et puisque cette action peut d'abord être exécutée localement sur chaque machine, elle peut rester un RDD et faire effectuer d'autres transformations à son jeu de données.
Notez cependant qu'il existe une reduceByKeyLocally
que vous pouvez utiliser pour afficher automatiquement la carte vers un emplacement unique.
c'est l'assistant qt:
réduire (f): Réduit les éléments de ce RDD en utilisant le .__ spécifié. opérateur binaire commutatif et associatif. Réduit actuellement partitions localement.
reduceByKey(func, numPartitions=None, partitionFunc=<function portable_hash>) :
Fusionner les valeurs pour chaque clé en utilisant une réduction associative et commutative une fonction.
Veuillez parcourir cette documentation officielle link .
reduce
est une action qui regroupe les éléments du jeu de données en utilisant une fonction func (qui prend deux arguments et en retourne un), nous pouvons également utiliser une réduction pour les RDD simples (pour plus d'informations, cliquez sur ICI ).
reduceByKey
Lorsqu'il est appelé sur un jeu de données de paires (K, V), retourne un jeu de données de paires (K, V) où les valeurs de chaque clé sont agrégées à l'aide de la fonction de réduction donnée func, qui doit être de type (V, V) = > V. (pour plus d'informations, cliquez sur ICI )