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)