Apache Pig 简明教程

Apache Pig - Running Scripts

在本章中,我们将了解如何在批处理模式下运行 Apache Pig 脚本。

Comments in Pig Script

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

Multi-line comments

我们将使用 '/ ', end them with ' /' 来开始多行注释。

/* These are the multi-line comments
  In the pig script */

Single –line comments

我们将使用 '--' 来开始单行注释。

--we can write single line comments like this.

Executing Pig Script in Batch mode

在批处理模式下执行 Apache Pig 语句时,请按照以下步骤操作。

Step 1

在一个文件中编写所有必需的 Pig Latin 语句。我们可以在一个文件中编写所有 Pig Latin 语句和命令并将其保存为 .pig 文件。

Step 2

执行 Apache Pig 脚本。你可以按照如下所示的方式从 shell(Linux)执行 Pig 脚本。

Local mode

MapReduce mode

$ pig -x local Sample_script.pig

$ pig -x mapreduce Sample_script.pig

你也可以按照如下所示的方式使用 exec 命令从 Grunt shell 执行它。

grunt> exec /sample_script.pig

Executing a Pig Script from HDFS

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

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

Example

假设我们在 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://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;
  1. 该脚本的第一条语句将以 student_details.txt 命名的文件中数据载入到名为 student 的关系中。

  2. 该脚本的第二条语句将按照年龄对该关系的元组进行降序排列,并将其存储为 student_order

  3. 该脚本的第三个语句将把 student_order 中的前 4 个元组存储为 student_limit

  4. 最后,第四个语句将转储 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)