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 local Sample_script.pig $ pig -x mapreduce Sample_script.pig

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

grunt> exec /sample_script.pig

从 HDFS 执行 Pig 脚本

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

$ pig -x mapreduce hdfs://127.0.0.1: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关系执行操作和转换的语句,如下所示。

student = LOAD 'hdfs://127.0.0.1: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://127.0.0.1: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)
广告