Apache Pig: ejecución de scripts

En este capítulo, veremos cómo ejecutar scripts de Apache Pig en modo por lotes.

Comentarios del guión de Pig

Al escribir un script en un archivo, podemos incluir comentarios en él como se muestra a continuación.

Comentarios de varias líneas

Comenzaremos los comentarios de varias líneas con ‘/ *’ y los terminaremos con ‘* /’.

/* These are the multi-line comments 
  In the pig script */ 

Comentarios de una sola línea

Comenzaremos los comentarios de una línea con «-«.

--we can write single line comments like this.

Ejecución de Pig Script en modo por lotes

Mientras ejecuta declaraciones de Apache Pig en modo por lotes, siga los pasos a continuación.

Paso 1

Escriba todas las declaraciones de Pig Latin necesarias en un archivo. Podemos escribir todas las instrucciones y comandos de Pig Latin en un archivo y guardarlo como .Pig expediente.

Paso 2

Ejecute el script de Apache Pig. Puede ejecutar el script Pig desde el shell (Linux) como se muestra a continuación.

Modo local Modo MapReduce
$ Pig -x local Sample_script.pig $ Pig -x mapreduce Sample_script.pig

También puede ejecutarlo desde el shell Grunt utilizando el comando exec como se muestra a continuación.

grunt> exec /sample_script.pig

Ejecución de Pig Script desde HDFS

También podemos ejecutar el script Pig que está en HDFS. Digamos que hay un script de Pig llamado Sample_script.pig en el directorio HDFS llamado / pig_data /… Podemos lograr esto como se muestra a continuación.

$ pig -x mapreduce hdfs://localhost:9000/pig_data/Sample_script.pig 

Ejemplo

Supongamos que tenemos un archivo student_details.txt en HDFS con el siguiente contenido.

student_details.txt

001,Rajiv,Reddy,21,9848022337,Hyderabad 
002,siddarth,Battacharya,22,9848022338,Kolkata
003,Rajesh,Khanna,22,9848022339,Delhi 
004,Preethi,Agarwal,21,9848022330,Pune 
005,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar 
006,Archana,Mishra,23,9848022335,Chennai 
007,Komal,Nayak,24,9848022334,trivendram 
008,Bharathi,Nambiayar,24,9848022333,Chennai

También tenemos un script de muestra llamado sample_script.pigen el mismo directorio HDFS. Este archivo contiene declaraciones que realizan operaciones y transformaciones en aprendiz relación como se muestra a continuación.

student = LOAD 'hdfs://localhost:9000/pig_data/student_details.txt' USING PigStorage(',')
   as (id:int, firstname:chararray, lastname:chararray, phone:chararray, city:chararray);
	
student_order = ORDER student BY age DESC;
  
student_limit = LIMIT student_order 4;
  
Dump student_limit;
  • La primera declaración del script cargará los datos en un archivo llamado student_details.txt como una relación llamada aprendiz

  • La segunda instrucción de script ordenará las tuplas de la relación en orden descendente según la edad y las almacenará como orden_estudiante

  • La tercera declaración de script mantendrá las primeras 4 tuplas orden_estudiante como student_limit

  • Finalmente, la cuarta declaración volcará el contenido de la relación student_limit

Hagámoslo ahora sample_script.pig Como se muestra abajo.

$./pig -x mapreduce hdfs://localhost:9000/pig_data/sample_script.pig

Apache Pig se inicia y produce una salida con el siguiente contenido.

(7,Komal,Nayak,24,9848022334,trivendram)
(8,Bharathi,Nambiayar,24,9848022333,Chennai) 
(5,Trupthi,Mohanthy,23,9848022336,Bhuwaneshwar) 
(6,Archana,Mishra,23,9848022335,Chennai)
2015-10-19 10:31:27,446 [main] INFO  org.apache.pig.Main - Pig script completed in 12
minutes, 32 seconds and 751 milliseconds (752751 ms)

🚫