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 脚本,如下所示。
Local 模式 | 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 脚本。 假设 HDFS 目录 /pig_data/ 中有一个名为 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 关系执行操作和转换的语句,如下所示。
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)