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拉丁语句写入单个文件。我们可以将所有Pig Latin语句和命令写入单个文件并将其保存为 .pig 文件。

第2步

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

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

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

grunt> exec /sample_script.pig

从HDFS执行Pig脚本

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

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

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

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

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

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)