Qu’est ce que Apache Pig?
Pig 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. 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 et ensuite être utilisé directement au sein du langage.
Pig était initialement 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, il a été transmis à l’Apache Software Foundation6.
Un programme Pig travaille sur des données élémentaires nommées atom. Un ensemble d’atoms, par exemple une ligne dans un fichier, s’appelle un tuple. Les tuples sont regroupés dans des bags.
Un programme Pig consiste souvent à charger des ensembles de données dans des bags, puis à créer de nouveaux bags par le biais d’opérations de tri, de filtrage, de jointure…
Une “requête” Pig définit un opérateur qui prend une relation en entrée et produit une autre relation en sortie. Les requêtes consistent en une séquence d’instructions suivant généralement le schéma suivant : 1 L’instruction LOAD charge les données d’un fichier (HDFS) sous la forme d’une relation (liste de n-uplets). 2 Une série de transformations traite les données. 3 L’instruction (optionnelle) STORE écrit le résultat dans le système de fichiers (HDFS) ; on peut aussi faire un DUMP pour afficher à l’écran.
Un programme Pig travaille sur des données élémentaires nommées atom. Un ensemble d’atoms, par exemple une ligne dans un fichier, s’appelle un tuple. Les tuples sont regroupés dans des bags. Un programme Pig consiste souvent à charger des ensembles de données dans des bags, puis à créer de nouveaux bags par le biais d’opérations de tri, de filtrage, de jointure… Un exemple de programme Pig de création, de chargement et de sauvegarde de bags est proposé ci-après.
Principaux opérateurs Pig
Operator | Description |
foreach | Applique une expression à chaque document |
filter | Filtre les tuples sur certains critères |
distinct | Elimination des doublons |
join | Jointures de deux bags |
group | Regroupement |
cogroup | Association de n-uplets provenant de deux sources |
cross | Produit cartésien de deux sources |
order | Tri |
limit | Limite la taille des données traitées |
union | Union de deux sources (dont les schémas peuvent être très différents) |
split | Partition d’une relation selon certains critères |
Advertisement