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.
|
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.