¡Una introducción a Apache Pig para principiantes absolutos!

Contenidos

Este artículo fue publicado como parte del Blogatón de ciencia de datos

Este artículo se centra en Apache Pig. Es una plataforma de alto nivel para procesar y analizar una gran cantidad de datos.

VISIÓN DE CONJUNTO

Si vemos la descripción general de nivel superior de Pig, Pig es una abstracción de MapReduce. Pig se ejecuta en Hadoop. Por lo tanto, utiliza tanto el sistema de archivos distribuido de Hadoop (HDFS) como el sistema de procesamiento de Hadoop, MapReduce. Se ejecutan los flujos de datos
por un motor. Se utiliza para analizar conjuntos de datos como flujos de datos. Incluye un lenguaje de alto nivel llamado Pig Latin para expresar estos flujos de datos.

La entrada para Pig es Pig Latin, que se convertirá en trabajos de MapReduce. Pig usa trucos de MapReduce para hacer todo el procesamiento de datos. Combina los scripts de Pig Latin en una serie de uno o más trabajos de MapReduce que a su vez se ejecutan.

Apache Pig fue diseñado por Yahoo porque es fácil de aprender y trabajar con él. Entonces, Pig hace que Hadoop sea bastante fácil. Apache Pig se desarrolló porque la programación de MapReduce se estaba volviendo bastante difícil y muchos usuarios de MapReduce no se sienten cómodos con los lenguajes declarativos. Ahora, Pig es un proyecto de código abierto bajo Apache.

TABLA DE CONTENIDO

  1. Características del cerdo
  2. Cerdo vs MapReduce
  3. Arquitectura de cerdo
  4. Opciones de ejecución de cerdo
  5. Comandos de ejecución básicos de Pig
  6. Tipos de datos de cerdo
  7. Operadores de cerdos
  8. Ejemplo de escritura latina de cerdo

1. CARACTERÍSTICAS DEL CERDO

Veamos algunas de las características de Pig.

  • Tiene un rico conjunto de operadores como unir, ordenar, etc.
  • Es fácil de programar ya que es similar a SQL.
  • Las tareas en Apache Pig se han convertido en trabajos de MapReduce automáticamente. Los programadores deben centrarse solo en la semántica del lenguaje y no en MapReduce.
  • Se pueden crear funciones propias usando Pig.
  • Las funciones en otros lenguajes de programación como Java se pueden incrustar en los scripts Pig Latin.
  • Apache Pig puede manejar
    todo tipo de datos, como datos estructurados, no estructurados y semiestructurados y
    almacena el resultado en HDFS.

2. CERDO VS MAPREDUCE

Veamos la diferencia entre Pig y MapReduce.

Pig tiene varias ventajas sobre MapReduce.

Apache Pig es un lenguaje de flujo de datos. Significa que permite a los usuarios describir cómo se deben leer, procesar y luego almacenar los datos de una o más entradas en una o más salidas en paralelo. Mientras que MapReduce, por otro lado, es un estilo de programación.

Apache Pig es un lenguaje de alto nivel, mientras que MapReduce es un código java compilado.

La sintaxis de Pig para realizar uniones y varios archivos es muy intuitiva y bastante simple como SQL. Código MapReduce
se vuelve complejo si desea escribir operaciones de unión.

La curva de aprendizaje de Apache Pig es muy pequeña. La experiencia en bibliotecas Java y MapReduce es imprescindible
para ejecutar el código MapReduce.

Los scripts de Apache Pig pueden hacer el equivalente a varias líneas de código MapReduce y el código MapReduce necesita más líneas de códigos para realizar las mismas operaciones.

Apache Pig es fácil de depurar y probar, mientras que los programas MapReduce requieren mucho tiempo para codificar, probar, etc. Pig Latin es menos costoso que MapReduce.

3. ARQUITECTURA PORCINA

Ahora veamos la arquitectura de Pig.

24764pig1-8305991

Fuente

Pig se sienta encima de Hadoop. Los scripts de Pig se pueden ejecutar en el shell Grunt o en el servidor Pig. El motor de ejecución de Pig the Pass optimiza y compila el script y finalmente lo convierte en trabajos MapReduce. Utiliza HDFS para almacenar datos intermedios entre trabajos de MapReduce y luego escribe su salida en HDFS.

4. OPCIONES DE EJECUCIÓN DE CERDOS

Apache Pig puede ejecutar dos modos de ejecución. Ambos producen los mismos resultados.

4.1. Modo local

Comando en pasarelas

pig -x local

4.2. Modo Hadoop

Comando en pasarelas

pig -exectype mapreduce

Apache Pig se puede ejecutar de tres formas en los dos modos anteriores.

  1. Modo por lotes / archivo de secuencia de comandos: coloque los comandos de Pig en un archivo de secuencia de comandos y ejecute la secuencia de comandos
  2. Programa incrustado / UDF: incrustar comandos de Pig en java y ejecutar los scripts

5. COMANDOS DE CONCHA DE GRUNT DE CERDO

Las conchas grunt se pueden usar para escribir escrituras de Pig Latin. Los comandos del shell se pueden invocar mediante los comandos fs y sh. Veamos algunos básicos
Comandos de cerdo.

5.1. comando fs

El comando fs le permite ejecutar comandos HDFS desde Pig

5.1.1 Para enumerar todos los directorios en HDFS

grunt> fs -ls;

Ahora, se mostrarán todos los archivos en HDFS.

5.1.2. Para crear un nuevo directorio mydir en HDFS

grunt> fs -mkdir mydir/;

El comando anterior creará un nuevo directorio llamado mydir en HDFS.

5.1.3. Para eliminar un directorio

grunt> fs -rmdir mydir;

El comando anterior eliminará el directorio creado mydir.

5.1.4. Para copiar un archivo a HDFS

grant> fs -put sales.txt sales/;

Aquí, el archivo llamado sales.txt es el archivo de origen que se copiará al directorio de destino en HDFS, es decir, ventas.

5.1.5. Para salir de Grunt Shell

grunt> quit;

El comando anterior saldrá del grunt shell.

5.2. comando sh

El comando sh le permite ejecutar una declaración de Unix desde Pig

5.2.1. Para mostrar la fecha actual

grunt> sh date;

Este comando mostrará la fecha actual.

5.2.2. Para enumerar archivos locales

grunt> sh ls;

Este comando mostrará todos los archivos en el sistema local.

5.2.3. Para ejecutar Pig Latin desde grunt shell

grunt> run salesreport.pig;

El comando anterior ejecutará un archivo de script de Pig Latin «salesreport.pig» desde el shell de grunt.

5.2.4. Para ejecutar Pig Latin desde el indicador de Unix

$pig salesreport.pig;

El comando anterior ejecutará un archivo de script de Pig Latin “salesreport.pig” desde el indicador de Unix.

6. P

Pig Latin consta de los siguientes tipos de datos.

6.1. Átomo de datos

Es un valor único. Puede ser una cadena o un número. Son de tipos escalares como int, float, double, etc.

Por ejemplo, «john», 9.0

6.2. Tupla

Una tupla es similar a un registro con una secuencia de campos. Puede ser de cualquier tipo de datos.

Por ejemplo, (‘john’, ‘james’) es una tupla.

6.3. Bolsa de datos

Consiste en una colección de tuplas que es equivalente a una «tabla» en SQL. Las tuplas no son únicas y pueden tener un número arbitrario de campos, cada uno puede ser de cualquier tipo.

Por ejemplo, {(‘john’, ‘James), (‘ king ‘,’ mark ‘)} es una bolsa de datos que es equivalente a la siguiente tabla en SQL.

6.4. Mapa de datos

Este tipo de datos
contiene una colección de pares clave-valor. Aquí, la clave debe ser un carácter único. Los valores pueden ser de cualquier tipo.

Por ejemplo, [name#(‘john’, ‘james’), age#22] es un mapa de datos donde nombre, edad son claves y (‘john,’ james ‘), 22 son valores.

7. OPERADORES DE CERDOS

A continuación se muestra el contenido del archivo student.txt.

John,23,Hyderabad
James,45,Hyderabad
Sam,33,Chennai
,56,Delhi
,43,Mumbai

7.1. CARGA

Carga datos del sistema de archivos dado.

A = LOAD 'student.txt' AS (name: chararray, age: int, city: chararray);

Los datos del archivo del estudiante con nombres de columna como ‘nombre’, ‘edad’, ‘ciudad’ se cargarán en una variable A.

7.2. VERTEDERO

El operador DUMP se utiliza para mostrar el contenido de una relación. Aquí, se mostrará el contenido de A.

DUMP A
//results
(John,23,Hyderabad)
(James,45,Hyderabad)
(Sam,33,Chennai)
(,56,Delhi)
(,43,Mumbai)

7.3. TIENDA

La función de almacenamiento guarda los resultados en el sistema de archivos.

STORE A into ‘myoutput’ using PigStorage(‘*’);

Aquí, los datos presentes en A se almacenarán en myoutput separados por ‘*’.

DUMP myoutput; 
//results
John*23*Hyderabad
James*45*Hyderabad
Sam*33*Chennai
*56*Delhi
*43*Mumbai

7.4. FILTRAR

B = FILTER A by name is not null;

El operador de FILTRO filtrará una tabla con algunas condiciones. Aquí, el nombre es la columna en A. Los valores no vacíos en el nombre se almacenarán en la variable B.

DUMP B;
//results
(John,23,Hyderabad)
(James,45,Hyderabad)
(Sam,33,Chennai)

7.5. PARA CADA UNO GENERAR

C = FOREACH A GENERATE name, city;

FOREACH operador está acostumbrado a acceder a registros individuales. Aquí, las filas presentes en el nombre y la ciudad se obtendrán de A y se almacenarán en C.

DUMP C
//results
(John,Hyderabad)
(James,Hyderabad)
(Sam,Chennai)
(,Delhi)
(,Mumbai)

8. EJEMPLO DE GUIÓN LATINA DE PIG

Tenemos un archivo de personas que tiene como campos la identificación del empleado, el nombre y las horas.

001,Rajiv,21
002,siddarth,12
003,Rajesh,22

Primero, cargue estos datos en un empleado variable. Filtrarlo por horas menos de 20 y almacenar a tiempo parcial. Ordene part time por orden descendente y guárdelo en otro archivo llamado part_time. Visualice el contenido.

El guión será

employee = Load ‘people’ as (empid, name, hours);
parttime = FILTER employee BY Hours < 20;
sorted = ORDER parttime by hours DESC;
STORE sorted INTO ‘part_time’;
DUMP sorted;
DESCRIBE sorted;
//results
(003,Rajesh,22)
(001,Rajiv,21)

NOTAS FINALES

Estos son algunos de los conceptos básicos de Apache Pig. Espero que hayas disfrutado leyendo este artículo. Empezar a practicar
con el entorno Cloudera.

Los medios que se muestran en este artículo no son propiedad de DataPeaker y se utilizan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.