Apache Pig - Présentation
Qu'est-ce qu'Apache Pig?
Apache Pig est une abstraction sur MapReduce. Il s'agit d'un outil / d'une plate-forme utilisé pour analyser des ensembles de données plus volumineux les représentant sous forme de flux de données. Le porc est généralement utilisé avecHadoop; nous pouvons effectuer toutes les opérations de manipulation de données dans Hadoop en utilisant Apache Pig.
Pour écrire des programmes d'analyse de données, Pig fournit un langage de haut niveau appelé Pig Latin. Ce langage fournit divers opérateurs à l'aide desquels les programmeurs peuvent développer leurs propres fonctions de lecture, d'écriture et de traitement des données.
Pour analyser les données en utilisant Apache Pig, les programmeurs doivent écrire des scripts en utilisant le langage Pig Latin. Tous ces scripts sont convertis en interne en tâches de mappage et de réduction. Apache Pig a un composant appeléPig Engine qui accepte les scripts Pig Latin comme entrée et convertit ces scripts en travaux MapReduce.
Pourquoi avons-nous besoin d'Apache Pig?
Les programmeurs qui ne sont pas très bons en Java avaient généralement du mal à travailler avec Hadoop, en particulier lorsqu'ils exécutaient des tâches MapReduce. Apache Pig est une aubaine pour tous ces programmeurs.
En utilisant Pig Latin, les programmeurs peuvent effectuer facilement des tâches MapReduce sans avoir à taper des codes complexes en Java.
Apache Pig utilise multi-query approach, réduisant ainsi la longueur des codes. Par exemple, une opération qui vous obligerait à taper 200 lignes de code (LoC) en Java peut être facilement effectuée en tapant aussi moins que 10 LoC dans Apache Pig. Finalement, Apache Pig réduit le temps de développement de près de 16 fois.
Pig Latin est SQL-like language et il est facile d'apprendre Apache Pig lorsque vous êtes familiarisé avec SQL.
Apache Pig fournit de nombreux opérateurs intégrés pour prendre en charge les opérations de données telles que les jointures, les filtres, le classement, etc. En outre, il fournit également des types de données imbriqués tels que des tuples, des sacs et des cartes qui manquent dans MapReduce.
Caractéristiques de Pig
Apache Pig est livré avec les fonctionnalités suivantes -
Rich set of operators - Il fournit de nombreux opérateurs pour effectuer des opérations telles que joindre, trier, filer, etc.
Ease of programming - Pig Latin est similaire à SQL et il est facile d'écrire un script Pig si vous êtes bon en SQL.
Optimization opportunities - Les tâches dans Apache Pig optimisent automatiquement leur exécution, les programmeurs doivent donc se concentrer uniquement sur la sémantique du langage.
Extensibility - En utilisant les opérateurs existants, les utilisateurs peuvent développer leurs propres fonctions pour lire, traiter et écrire des données.
UDF’s - Pig fournit la possibilité de créer User-defined Functions dans d'autres langages de programmation tels que Java et les invoquer ou les incorporer dans des scripts Pig.
Handles all kinds of data- Apache Pig analyse toutes sortes de données, aussi bien structurées que non structurées. Il stocke les résultats dans HDFS.
Apache Pig contre MapReduce
Vous trouverez ci-dessous les principales différences entre Apache Pig et MapReduce.
Apache Pig | MapReduce |
---|---|
Apache Pig est un langage de flux de données. | MapReduce est un paradigme de traitement de données. |
C'est un langage de haut niveau. | MapReduce est de bas niveau et rigide. |
L'exécution d'une opération de jointure dans Apache Pig est assez simple. | Il est assez difficile dans MapReduce d'effectuer une opération de jointure entre des ensembles de données. |
Tout programmeur novice ayant une connaissance de base de SQL peut travailler facilement avec Apache Pig. | L'exposition à Java est indispensable pour travailler avec MapReduce. |
Apache Pig utilise une approche multi-requêtes, réduisant ainsi la longueur des codes dans une large mesure. | MapReduce nécessitera près de 20 fois plus de lignes pour effectuer la même tâche. |
Il n'y a pas besoin de compilation. Lors de l'exécution, chaque opérateur Apache Pig est converti en interne en un travail MapReduce. | Les travaux MapReduce ont un long processus de compilation. |
Apache Pig contre SQL
Vous trouverez ci-dessous les principales différences entre Apache Pig et SQL.
Porc | SQL |
---|---|
Pig Latin est un procedural Langue. | SQL est un declarative Langue. |
Dans Apache Pig, schemaest facultatif. Nous pouvons stocker des données sans concevoir de schéma (les valeurs sont stockées sous forme de $ 01, $ 02 etc.) | Le schéma est obligatoire dans SQL. |
Le modèle de données dans Apache Pig est nested relational. | Le modèle de données utilisé dans SQL is flat relational. |
Apache Pig offre des opportunités limitées pour Query optimization. | Il y a plus d'opportunités d'optimisation des requêtes dans SQL. |
En plus des différences ci-dessus, Apache Pig Latin -
- Permet les fractionnements dans le pipeline.
- Permet aux développeurs de stocker des données n'importe où dans le pipeline.
- Déclare les plans d'exécution.
- Fournit des opérateurs pour exécuter les fonctions ETL (Extraire, Transformer et Charger).
Apache Pig Vs Hive
Apache Pig et Hive sont tous deux utilisés pour créer des tâches MapReduce. Et dans certains cas, Hive fonctionne sur HDFS de la même manière qu'Apache Pig. Dans le tableau suivant, nous avons répertorié quelques points importants qui distinguent Apache Pig de Hive.
Apache Pig | Ruche |
---|---|
Apache Pig utilise un langage appelé Pig Latin. Il a été créé à l'origine àYahoo. | Hive utilise un langage appelé HiveQL. Il a été créé à l'origine àFacebook. |
Pig Latin est un langage de flux de données. | HiveQL est un langage de traitement de requêtes. |
Pig Latin est un langage procédural et il s'inscrit dans le paradigme du pipeline. | HiveQL est un langage déclaratif. |
Apache Pig peut gérer des données structurées, non structurées et semi-structurées. | Hive est principalement destiné aux données structurées. |
Applications d'Apache Pig
Apache Pig est généralement utilisé par les data scientists pour effectuer des tâches impliquant un traitement ad hoc et un prototypage rapide. Apache Pig est utilisé -
- Pour traiter d'énormes sources de données telles que les journaux Web.
- Pour effectuer le traitement des données pour les plateformes de recherche.
- Pour traiter les charges de données sensibles au temps.
Apache Pig - Histoire
Dans 2006, Apache Pig a été développé en tant que projet de recherche chez Yahoo, en particulier pour créer et exécuter des tâches MapReduce sur chaque ensemble de données. Dans2007, Apache Pig a été open source via l'incubateur Apache. Dans2008, la première version d'Apache Pig est sortie. Dans2010, Apache Pig a obtenu son diplôme en tant que projet de premier niveau Apache.