Apache Pig - 运行脚本


在本章中,我们将了解如何以批处理模式运行 Apache Pig 脚本。

Pig 脚本中的评论

在文件中编写脚本时,我们可以在其中包含注释,如下所示。

多行注释

我们将以“/*”开始多行注释,以“*/”结束。

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

单行注释

我们将以“--”开始单行注释。

--we can write single line comments like this.

以批处理模式执行 Pig 脚本

在批处理模式下执行 Apache Pig 语句时,请按照以下步骤操作。

步骤1

将所有必需的 Pig Latin 语句写入一个文件中。我们可以将所有 Pig Latin 语句和命令写入一个文件中,并将其保存为.pig文件。

第2步

执行 Apache Pig 脚本。您可以从 shell (Linux) 执行 Pig 脚本,如下所示。

本地模式 MapReduce模式
$ pig -x 本地Sample_script.pig $ pig -x mapreduce Sample_script.pig

您也可以使用 exec 命令从 Grunt shell 执行它,如下所示。

grunt> exec /sample_script.pig

从 HDFS 执行 Pig 脚本

我们还可以执行驻留在 HDFS 中的 Pig 脚本。假设HDFS 目录/pig_data/中有一个名为Sample_script.pig 的Pig 脚本。我们可以如下所示执行它。

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

例子

假设我们在HDFS中有一个文件student_details.txt,其内容如下。

学生详细信息.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

我们还有一个名为example_script.pig的示例脚本,位于同一 HDFS 目录中。该文件包含对学生关系执行操作和转换的语句,如下所示。

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;
  • 该脚本的第一条语句会将名为Student_details.txt的文件中的数据加载为名为Student 的关系。

  • 脚本的第二条语句将根据年龄按降序排列关系的元组,并将其存储为Student_order

  • 脚本的第三条语句会将Student_order的前 4 个元组存储为Student_limit

  • 最后第四条语句将转储关系Student_limit的内容。

现在让我们执行sample_script.pig,如下所示。

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

Apache Pig 被执行并为您提供包含以下内容的输出。

(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)