Apache Pig: lectura de datos
En general, Apache Pig funciona sobre Hadoop. Es una herramienta analítica que analiza grandes conjuntos de datos que existen en elHadoop File System. Para analizar datos usando Apache Pig, tenemos que cargar inicialmente los datos en Apache Pig. Este capítulo explica cómo cargar datos en Apache Pig desde HDFS.
Preparando HDFS
En el modo MapReduce, Pig lee (carga) datos de HDFS y almacena los resultados en HDFS. Por lo tanto, iniciemos HDFS y creemos los siguientes datos de muestra en HDFS.
Identificación del Estudiante | Nombre de pila | Apellido | Teléfono | Ciudad |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddarth | Battacharya | 9848022338 | Calcuta |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanthy | 9848022336 | Bhuwaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
El conjunto de datos anterior contiene detalles personales como identificación, nombre, apellido, número de teléfono y ciudad, de seis estudiantes.
Paso 1: verificar Hadoop
En primer lugar, verifique la instalación con el comando de la versión de Hadoop, como se muestra a continuación.
$ hadoop version
Si su sistema contiene Hadoop, y si ha establecido la variable PATH, obtendrá el siguiente resultado:
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
Paso 2: iniciar HDFS
Navegar por el sbin directorio de Hadoop y empezar yarn y Hadoop dfs (sistema de archivos distribuido) como se muestra a continuación.
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
Paso 3: cree un directorio en HDFS
En Hadoop DFS, puede crear directorios usando el comando mkdir. Cree un nuevo directorio en HDFS con el nombrePig_Data en la ruta requerida como se muestra a continuación.
$cd /$Hadoop_Home/bin/
$ hdfs dfs -mkdir hdfs://localhost:9000/Pig_Data
Paso 4: colocar los datos en HDFS
El archivo de entrada de Pig contiene cada tupla / registro en líneas individuales. Y las entidades del registro están separadas por un delimitador (en nuestro ejemplo usamos“,”).
En el sistema de archivos local, cree un archivo de entrada student_data.txt que contiene datos como se muestra a continuación.
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.
Ahora, mueva el archivo del sistema de archivos local a HDFS usando putcomando como se muestra a continuación. (Puedes usarcopyFromLocal comando también.)
$ cd $HADOOP_HOME/bin
$ hdfs dfs -put /home/Hadoop/Pig/Pig_Data/student_data.txt dfs://localhost:9000/pig_data/
Verificando el archivo
Puedes usar el cat comando para verificar si el archivo se ha movido al HDFS, como se muestra a continuación.
$ cd $HADOOP_HOME/bin
$ hdfs dfs -cat hdfs://localhost:9000/pig_data/student_data.txt
Salida
Puede ver el contenido del archivo como se muestra a continuación.
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
El operador de carga
Puede cargar datos en Apache Pig desde el sistema de archivos (HDFS / Local) usando LOAD operador de Pig Latin.
Sintaxis
La declaración de carga consta de dos partes divididas por el operador "=". En el lado izquierdo, debemos mencionar el nombre de la relaciónwhere queremos almacenar los datos, y en el lado derecho, tenemos que definir howalmacenamos los datos. A continuación se muestra la sintaxis de laLoad operador.
Relation_name = LOAD 'Input file path' USING function as schema;
Dónde,
relation_name - Tenemos que mencionar la relación en la que queremos almacenar los datos.
Input file path- Tenemos que mencionar el directorio HDFS donde se almacena el archivo. (En modo MapReduce)
function - Tenemos que elegir una función del conjunto de funciones de carga que proporciona Apache Pig (BinStorage, JsonLoader, PigStorage, TextLoader).
Schema- Tenemos que definir el esquema de los datos. Podemos definir el esquema requerido de la siguiente manera:
(column1 : data type, column2 : data type, column3 : data type);
Note- Cargamos los datos sin especificar el esquema. En ese caso, las columnas se direccionarán como $ 01, $ 02, etc… (verifique).
Ejemplo
Como ejemplo, carguemos los datos en student_data.txt en Pig bajo el esquema llamado Student utilizando la LOAD mando.
Iniciar el cerdo Grunt Shell
En primer lugar, abra la terminal de Linux. Inicie el shell Pig Grunt en modo MapReduce como se muestra a continuación.
$ Pig –x mapreduce
Iniciará el caparazón de Pig Grunt como se muestra a continuación.
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>
Ejecute la declaración de carga
Ahora cargue los datos del archivo student_data.txt en Pig ejecutando la siguiente instrucción Pig Latin en el 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 );
A continuación se muestra la descripción de la declaración anterior.
Nombre de la relación | Hemos almacenado los datos en el esquema. student. | ||||||||||||
Ruta del archivo de entrada | Estamos leyendo datos del archivo. student_data.txt, que se encuentra en el directorio / pig_data / de HDFS. | ||||||||||||
Función de almacenamiento | Hemos utilizado el PigStorage()función. Carga y almacena datos como archivos de texto estructurados. Toma un delimitador mediante el cual se separa cada entidad de una tupla, como parámetro. De forma predeterminada, toma '\ t' como parámetro. | ||||||||||||
esquema | Hemos almacenado los datos utilizando el siguiente esquema.
|
Note - el loaddeclaración simplemente cargará los datos en la relación especificada en Pig. Para verificar la ejecución delLoad declaración, tienes que usar el Diagnostic Operators que se tratan en los siguientes capítulos.