Mise en cache distribuée avec des variables de diffusion: Apache Spark

Cet article de blog traite de la mise en cache distribuée avec des variables de diffusion et vous permet de commencer à distribuer efficacement de grandes valeurs dans la programmation Spark.



Contribution de Prithviraj Bose



Les variables de diffusion sont utiles lorsque de grands ensembles de données doivent être mis en cache dans des exécuteurs. Ce blog explique comment commencer.

Que sont les variables de diffusion?



Les variables de diffusion dans Apache Spark sont un mécanisme de partage de variables entre les exécuteurs qui sont destinés à être en lecture seule. Sans les variables de diffusion, ces variables seraient expédiées à chaque exécuteur pour chaque transformation et action, ce qui peut entraîner une surcharge du réseau. Cependant, avec les variables de diffusion, elles sont envoyées une fois à tous les exécuteurs et sont mises en cache pour référence future.

Cas d'utilisation des variables de diffusion

Imaginez qu'en effectuant une transformation, nous devons rechercher une grande table de codes postaux / codes PIN. Ici, il n'est ni possible d'envoyer la grande table de recherche à chaque fois aux exécuteurs, ni d'interroger la base de données à chaque fois. La solution devrait être de convertir cette table de recherche en une variable de diffusion et Spark la mettra en cache dans chaque exécuteur pour référence future.

Prenons un exemple simple pour comprendre les concepts ci-dessus. Nous avons un fichier CSV avec les noms des pays et leurs capitales. Le fichier CSV peut être trouvé Ici .



CSV-file-distributed-caching

En supposant que nous traitons les données démographiques des pays et que nous devons obtenir la capitale de ce pays. Dans ce cas, nous pouvons convertir les données du fichier CSV en une variable de diffusion.

Commençons par charger le fichier CSV dans une carte, si le fichier est trouvé, la méthode retourne Quelques pays) sinon ça revient Aucun .

Après le chargement réussi du fichier CSV, nous convertissons la carte en une variable de diffusion et l'utilisons dans notre programme.

Dans l'extrait de code ci-dessus, nous chargeons le fichier CSV sur une carte des pays puis nous convertissons cette carte en une variable de diffusion paysCache . Par la suite, nous créons un RDD à partir des clés de des pays . dans le searchCountryDétails Nous recherchons tous les pays en commençant par une lettre définie par l'utilisateur et la méthode retourne un RDD de pays avec leurs capitales. La variable de diffusion countrieCache est utilisé pour rechercher les capitales.
De cette façon, nous n'avons pas besoin d'envoyer toutes les données CSV à chaque fois que nous devons effectuer une recherche.

Le code pour le searchCountryDétails est montré ci-dessous,

Le code source complet peut être trouvé Ici .

Vous avez une question pour nous? Mentionnez-les dans la section commentaires et nous vous répondrons.

Articles Similaires:

Explication des accumulateurs d'étincelles

Apache Spark combineByKey expliqué

goto, fonction c ++