Apache Pig - Lecture des données

En général, Apache Pig fonctionne sur Hadoop. C'est un outil analytique qui analyse les grands ensembles de données qui existent dans leHadoop File System. Pour analyser les données à l'aide d'Apache Pig, nous devons d'abord charger les données dans Apache Pig. Ce chapitre explique comment charger des données sur Apache Pig à partir de HDFS.

Préparation de HDFS

En mode MapReduce, Pig lit (charge) les données de HDFS et stocke les résultats dans HDFS. Par conséquent, commençons HDFS et créons les exemples de données suivants dans HDFS.

Carte d'étudiant Prénom Nom de famille Téléphone Ville
001 Rajiv Reddy 9848022337 Hyderabad
002 siddarth Battacharya 9848022338 Calcutta
003 Rajesh Khanna 9848022339 Delhi
004 Preethi Agarwal 9848022330 Pune
005 Trupthi Mohanthy 9848022336 Bhuwaneshwar
006 Archana Mishra 9848022335 Chennai

L'ensemble de données ci-dessus contient des informations personnelles telles que l'identifiant, le prénom, le nom, le numéro de téléphone et la ville de six étudiants.

Étape 1: vérification de Hadoop

Tout d'abord, vérifiez l'installation à l'aide de la commande de version Hadoop, comme indiqué ci-dessous.

$ hadoop version

Si votre système contient Hadoop, et si vous avez défini la variable PATH, vous obtiendrez la sortie suivante -

Hadoop 2.6.0 
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 
e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1 
Compiled by jenkins on 2014-11-13T21:10Z 
Compiled with protoc 2.5.0 
From source with checksum 18e43357c8f927c0695f1e9522859d6a 
This command was run using /home/Hadoop/hadoop/share/hadoop/common/hadoop
common-2.6.0.jar

Étape 2: démarrer HDFS

Parcourez le sbin répertoire de Hadoop et démarrer yarn et Hadoop dfs (système de fichiers distribué) comme indiqué ci-dessous.

cd /$Hadoop_Home/sbin/ 
$ start-dfs.sh 
localhost: starting namenode, logging to /home/Hadoop/hadoop/logs/hadoopHadoop-namenode-localhost.localdomain.out 
localhost: starting datanode, logging to /home/Hadoop/hadoop/logs/hadoopHadoop-datanode-localhost.localdomain.out 
Starting secondary namenodes [0.0.0.0] 
starting secondarynamenode, logging to /home/Hadoop/hadoop/logs/hadoop-Hadoopsecondarynamenode-localhost.localdomain.out
 
$ start-yarn.sh 
starting yarn daemons 
starting resourcemanager, logging to /home/Hadoop/hadoop/logs/yarn-Hadoopresourcemanager-localhost.localdomain.out 
localhost: starting nodemanager, logging to /home/Hadoop/hadoop/logs/yarnHadoop-nodemanager-localhost.localdomain.out

Étape 3: créer un répertoire dans HDFS

Dans Hadoop DFS, vous pouvez créer des répertoires à l'aide de la commande mkdir. Créez un nouveau répertoire dans HDFS avec le nomPig_Data dans le chemin requis comme indiqué ci-dessous.

$cd /$Hadoop_Home/bin/ 
$ hdfs dfs -mkdir hdfs://localhost:9000/Pig_Data

Étape 4: Placement des données dans HDFS

Le fichier d'entrée de Pig contient chaque tuple / enregistrement dans des lignes individuelles. Et les entités de l'enregistrement sont séparées par un délimiteur (dans notre exemple nous avons utilisé“,”).

Dans le système de fichiers local, créez un fichier d'entrée student_data.txt contenant des données comme indiqué ci-dessous.

001,Rajiv,Reddy,9848022337,Hyderabad
002,siddarth,Battacharya,9848022338,Kolkata
003,Rajesh,Khanna,9848022339,Delhi
004,Preethi,Agarwal,9848022330,Pune
005,Trupthi,Mohanthy,9848022336,Bhuwaneshwar
006,Archana,Mishra,9848022335,Chennai.

Maintenant, déplacez le fichier du système de fichiers local vers HDFS en utilisant putcomme indiqué ci-dessous. (Vous pouvez utilisercopyFromLocal commande aussi.)

$ cd $HADOOP_HOME/bin 
$ hdfs dfs -put /home/Hadoop/Pig/Pig_Data/student_data.txt dfs://localhost:9000/pig_data/

Vérification du fichier

Vous pouvez utiliser le cat pour vérifier si le fichier a été déplacé vers le HDFS, comme indiqué ci-dessous.

$ cd $HADOOP_HOME/bin
$ hdfs dfs -cat hdfs://localhost:9000/pig_data/student_data.txt

Production

Vous pouvez voir le contenu du fichier comme indiqué ci-dessous.

15/10/01 12:16:55 WARN util.NativeCodeLoader: Unable to load native-hadoop
library for your platform... using builtin-java classes where applicable
  
001,Rajiv,Reddy,9848022337,Hyderabad
002,siddarth,Battacharya,9848022338,Kolkata
003,Rajesh,Khanna,9848022339,Delhi
004,Preethi,Agarwal,9848022330,Pune
005,Trupthi,Mohanthy,9848022336,Bhuwaneshwar
006,Archana,Mishra,9848022335,Chennai

L'opérateur de charge

Vous pouvez charger des données dans Apache Pig à partir du système de fichiers (HDFS / Local) en utilisant LOAD opérateur de Pig Latin.

Syntaxe

L'instruction de chargement se compose de deux parties divisées par l'opérateur «=». Sur le côté gauche, nous devons mentionner le nom de la relationwhere nous voulons stocker les données, et sur le côté droit, nous devons définir hownous stockons les données. Ci-dessous, la syntaxe duLoad opérateur.

Relation_name = LOAD 'Input file path' USING function as schema;

Où,

  • relation_name - Nous devons mentionner la relation dans laquelle nous voulons stocker les données.

  • Input file path- Nous devons mentionner le répertoire HDFS dans lequel le fichier est stocké. (En mode MapReduce)

  • function - Nous devons choisir une fonction parmi l'ensemble des fonctions de chargement fournies par Apache Pig (BinStorage, JsonLoader, PigStorage, TextLoader).

  • Schema- Nous devons définir le schéma des données. Nous pouvons définir le schéma requis comme suit -

(column1 : data type, column2 : data type, column3 : data type);

Note- Nous chargeons les données sans spécifier le schéma. Dans ce cas, les colonnes seront adressées comme $ 01, $ 02, etc… (cocher).

Exemple

À titre d'exemple, chargeons les données dans student_data.txt dans Pig sous le schéma nommé Student en utilisant le LOAD commander.

Démarrez le Pig Grunt Shell

Tout d'abord, ouvrez le terminal Linux. Démarrez le shell Pig Grunt en mode MapReduce comme indiqué ci-dessous.

$ Pig –x mapreduce

Il démarrera le shell Pig Grunt comme indiqué ci-dessous.

15/10/01 12:33:37 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL
15/10/01 12:33:37 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE
15/10/01 12:33:37 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType

2015-10-01 12:33:38,080 [main] INFO  org.apache.pig.Main - Apache Pig version 0.15.0 (r1682971) compiled Jun 01 2015, 11:44:35
2015-10-01 12:33:38,080 [main] INFO  org.apache.pig.Main - Logging error messages to: /home/Hadoop/pig_1443683018078.log
2015-10-01 12:33:38,242 [main] INFO  org.apache.pig.impl.util.Utils - Default bootup file /home/Hadoop/.pigbootup not found
  
2015-10-01 12:33:39,630 [main]
INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:9000
 
grunt>

Exécutez l'instruction Load

Maintenant, chargez les données du fichier student_data.txt dans Pig en exécutant l'instruction Pig Latin suivante dans le shell Grunt.

grunt> student = LOAD 'hdfs://localhost:9000/pig_data/student_data.txt' 
   USING PigStorage(',')
   as ( id:int, firstname:chararray, lastname:chararray, phone:chararray, 
   city:chararray );

Voici la description de la déclaration ci-dessus.

Nom de la relation Nous avons stocké les données dans le schéma student.
Chemin du fichier d'entrée Nous lisons les données du fichier student_data.txt, qui se trouve dans le répertoire / pig_data / de HDFS.
Fonction de stockage Nous avons utilisé le PigStorage()fonction. Il charge et stocke les données sous forme de fichiers texte structurés. Il prend un délimiteur à l'aide duquel chaque entité d'un tuple est séparée, en tant que paramètre. Par défaut, il prend '\ t' comme paramètre.
schéma

Nous avons stocké les données en utilisant le schéma suivant.

colonne id Prénom nom de famille téléphone ville
Type de données int tableau de caractères tableau de caractères tableau de caractères tableau de caractères

Note - Le loadL'instruction chargera simplement les données dans la relation spécifiée dans Pig. Pour vérifier l'exécution duLoad déclaration, vous devez utiliser la Diagnostic Operators qui sont discutés dans les chapitres suivants.