Apache Pig – 运行脚本

Apache Pig – 运行脚本


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

Pig Script中的评论

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

多行注释

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

/* 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 脚本,如下所示。

Local mode 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://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

我们还有一个名为sample_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)

觉得文章有用?

点个广告表达一下你的爱意吧 !😁