Apache Pig - Architecture

Le langage utilisé pour analyser les données dans Hadoop à l'aide de Pig est appelé Pig Latin. C'est un langage de traitement de données de haut niveau qui fournit un riche ensemble de types de données et d'opérateurs pour effectuer diverses opérations sur les données.

Pour effectuer une tâche particulière Les programmeurs utilisant Pig, les programmeurs doivent écrire un script Pig en utilisant le langage Pig Latin, et les exécuter en utilisant l'un des mécanismes d'exécution (Grunt Shell, UDF, Embedded). Après exécution, ces scripts passeront par une série de transformations appliquées par le Pig Framework, pour produire la sortie souhaitée.

En interne, Apache Pig convertit ces scripts en une série de tâches MapReduce et facilite ainsi le travail du programmeur. L'architecture d'Apache Pig est illustrée ci-dessous.

Composants Apache Pig

Comme le montre la figure, il existe différents composants dans le framework Apache Pig. Jetons un coup d'œil aux principaux composants.

Analyseur

Au départ, les scripts Pig sont gérés par l'analyseur. Il vérifie la syntaxe du script, effectue la vérification de type et d'autres vérifications diverses. La sortie de l'analyseur sera un DAG (graphique acyclique dirigé), qui représente les instructions Pig Latin et les opérateurs logiques.

Dans le DAG, les opérateurs logiques du script sont représentés comme des nœuds et les flux de données sont représentés comme des arêtes.

Optimiseur

Le plan logique (DAG) est transmis à l'optimiseur logique, qui effectue les optimisations logiques telles que la projection et le refoulement.

Compilateur

Le compilateur compile le plan logique optimisé en une série de travaux MapReduce.

Moteur d'exécution

Enfin, les travaux MapReduce sont soumis à Hadoop dans un ordre trié. Enfin, ces jobs MapReduce sont exécutés sur Hadoop et produisent les résultats souhaités.

Modèle de données Pig Latin

Le modèle de données de Pig Latin est entièrement imbriqué et permet des types de données non atomiques complexes tels que map et tuple. Vous trouverez ci-dessous la représentation schématique du modèle de données de Pig Latin.

Atome

Toute valeur unique en Pig Latin, indépendamment de leurs données, le type est appelée Atom. Il est stocké sous forme de chaîne et peut être utilisé comme chaîne et nombre. int, long, float, double, chararray et bytearray sont les valeurs atomiques de Pig. Une donnée ou une simple valeur atomique est connue sous le nom defield.

Example - 'raja' ou '30'

Tuple

Un enregistrement formé par un ensemble ordonné de champs est appelé tuple, les champs peuvent être de n'importe quel type. Un tuple est similaire à une ligne dans une table de SGBDR.

Example - (Raja, 30 ans)

Sac

Un sac est un ensemble non ordonné de tuples. En d'autres termes, une collection de tuples (non uniques) est appelée sac. Chaque tuple peut avoir n'importe quel nombre de champs (schéma flexible). Un sac est représenté par «{}». Il est similaire à une table dans SGBDR, mais contrairement à une table dans SGBDR, il n'est pas nécessaire que chaque tuple contienne le même nombre de champs ou que les champs à la même position (colonne) aient le même type.

Example - {(Raja, 30 ans), (Mohammad, 45 ans)}

Un sac peut être un champ dans une relation; dans ce contexte, il est connu commeinner bag.

Example - {Raja, 30 ans, {9848022338, [email protected],}}

Carte

Une carte (ou carte de données) est un ensemble de paires clé-valeur. lekeydoit être de type chararray et doit être unique. levaluepeut être de n'importe quel type. Il est représenté par «[]»

Example - [nom # Raja, 30 ans]

Relation

Une relation est un sac de tuples. Les relations en Pig Latin ne sont pas ordonnées (il n'y a aucune garantie que les tuples soient traités dans un ordre particulier).