Accueil🇫🇷Chercher

Apache Pig

Pig[3] est une plateforme haut niveau pour la création de programme MapReduce utilisé avec Hadoop. Le langage de cette plateforme est appelé le Pig Latin[3]. Pig Latin s'abstrait du langage de programmation Java MapReduce et se place à un niveau d'abstraction supérieur, similaire à celle de SQL pour systèmes SGBDR. Pig Latin peut être étendue en utilisant UDF (User Defined Functions) que l'utilisateur peut écrire en Java, en Python, en JavaScript, en Ruby ou en Groovy[4] et ensuite être utilisé directement au sein du langage.

Pig était initialement [5] développé chez Yahoo Research dans les années 2006 pour les chercheurs qui souhaitaient avoir une solution ad-hoc pour créer et exécuter des jobs map-reduce sur d'importants jeux de données. En 2007[6], il a été transmis à l'Apache Software Foundation[7].

Exemple

Voici un exemple d'un programme "Word Count" (calcul du nombre d'occurrences de chaque mot) en Pig Latin:

-- Charge le texte depuis un fichier local
 input_lines = LOAD '/tmp/my-copy-of-all-pages-on-internet' AS (line:chararray);
 
 -- Extrait les mots de chaque ligne et transforme-les en type "pig bag",
 -- puis, utilise la fonction "flatten" sur le "pig bag" pour avoir un mot
 -- dans chaque ligne
 words = FOREACH input_lines GENERATE FLATTEN(TOKENIZE(line)) AS word;
 
 -- Filtre en enlevant tous les mots composés uniquement d'espaces
 filtered_words = FILTER words BY word MATCHES '\\w+';
 
 -- Crée un groupe pour chaque mot
 word_groups = GROUP filtered_words BY word;
 
 -- Compte le nombre d'occurrences de chaque mot 
 word_count = FOREACH word_groups GENERATE COUNT(filtered_words) AS count, group AS word;
 
 -- Ordonne les mots par leurs nombres d'occurrences (en ordre décroissant)
 ordered_word_count = ORDER word_count BY count DESC;
 -- Enregistre le résultat dans un fichier local
 STORE ordered_word_count INTO '/tmp/number-of-words-on-internet';

Le programme ci-dessus va générer des tâches exécutables parallèles qui peuvent être distribués sur plusieurs machines dans un cluster Hadoop pour compter le nombre de mots dans un ensemble de données telles que les pages Web sur Internet.

Pig vs SQL

Par rapport au SQL, Pig:

  1. Utilise l'Ă©valuation paresseuse,
  2. utilise des extract, transform, load (ETL),
  3. est capable de stocker des données à tout moment pendant un pipeline,
  4. déclare le plan d'exécution,
  5. exécute le workflow subdivisé selon un graphe, au lieu d'une exécution purement séquentielle.

En revanche, les SGBD sont sensiblement plus rapide que le système de MapReduce une fois que les données sont chargées, ce chargement de données étant beaucoup plus rapide dans un système de MapReduce. Et les systèmes de bases de données relationnels offrent directement prêtes à l'emploi des fonctionnalités de stockage en colonnes, de traitement de données compressées, d'indexation pour une localisation plus rapide des données et de tolérance aux fautes au niveau transactionnel[8].

Pig Latin est un langage procĂ©dural et s'inscrit tout naturellement dans le paradigme du pipeline tandis que SQL est plutĂ´t dĂ©claratif.  En SQL, les utilisateurs peuvent spĂ©cifier que les donnĂ©es de deux tables doivent ĂŞtre jointes, mais pas quelle implĂ©mentation de jointure est Ă  utiliser et «... pour de nombreuses applications le moteur de requĂŞtes n'a pas une connaissance suffisante des donnĂ©es ou une expertise suffisante pour spĂ©cifier un algorithme de jointure appropriĂ©. »[9]. Pig Latin permet aux utilisateurs de spĂ©cifier une implĂ©mentation ou des aspects de l'implĂ©mentation Ă  utiliser dans l'exĂ©cution d'un script de plusieurs façons[10]. En effet, la programmation Pig Latin est similaire Ă  la spĂ©cification d'un plan d'exĂ©cution de la requĂŞte, qui rend plus facile pour les programmeurs de contrĂ´ler explicitement le flux de leur tâche de traitement de donnĂ©es[11].

SQL est orienté autour de requêtes qui produisent un résultat unique. Il gère également les arbres, mais n'a aucun mécanisme intégré pour diviser un flux de traitement de données et appliquer les différents opérateurs à chaque sous-flux. Pig Latin décrit un Graphe orienté acyclique (DAG) plutôt qu'un pipeline[10].

Pig Latin est capable d'inclure du code utilisateur Ă  n'importe quel point dans le pipeline. Avec SQL, les donnĂ©es doivent d'abord ĂŞtre importĂ©es dans la base de donnĂ©es, avant que l'on puisse lancer un processus de nettoyage et de transformation de celles-ci.

Voir aussi

  • Apache Hive
  • Sawzall — outil similaire de Google
  • Hadoop
  • CatĂ©gorie:Écosystème Hadoop

Références

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.