Apache Pig 简明教程

Apache Pig - Execution

在上一个章节中,我们解释了如何安装 Apache Pig。在这个章节中,我们将讨论如何执行 Apache Pig。

Apache Pig Execution Modes

您可以在两种模式下运行 Apache Pig,即 Local ModeHDFS mode

Local Mode

在此模式中,所有文件都从您的本地主机和本地文件系统安装并运行。不需要 Hadoop 或 HDFS。此模式通常用于测试目的。

MapReduce Mode

MapReduce 模式是我们使用 Apache Pig 加载或处理 Hadoop 文件系统 (HDFS) 中存在的数据的位置。在此模式中,无论何时我们执行 Pig Latin 语句来处理数据,后端都会调用一个 MapReduce 作业,从而对 HDFS 中存在的数据执行特定操作。

Apache Pig Execution Mechanisms

Apache Pig 脚本可以通过以下三种方式执行:交互模式、批处理模式和嵌入模式。

  1. Interactive Mode (Grunt Shell) − 您可以使用 Grunt Shell 以交互模式运行 Apache Pig。在此 Shell 中,您可以输入 Pig Latin 语句并获取输出(使用 Dump 操作符)。

  2. Batch Mode (脚本) − 您可以通过使用 .pig 扩展名在单个文件中编写 Pig Latin 脚本,以批处理模式运行 Apache Pig。

  3. Embedded Mode (UDF) − Apache Pig 提供在编程语言(例如 Java)中定义我们自己的函数(*U*ser *D*efined *F*unctions)并将其用于我们脚本中的服务。

Invoking the Grunt Shell

您可以使用 −x 选项,按所需模式(本地/MapReduce)调用 Grunt shell,如下所示。

Local mode

MapReduce mode

Command − $ ./pig –x local

Command − $ ./pig -x mapreduce

Output

Output

这两个命令中的任一个都将给你 Grunt shell 提示符,如下所示。

grunt>

你可以使用 ‘ctrl + d’. 退出 Grunt shell

在调用 Grunt shell 之后,你可以直接在其中输入 Pig Latin 语句子来执行 Pig 脚本。

grunt> customers = LOAD 'customers.txt' USING PigStorage(',');

Executing Apache Pig in Batch Mode

你可以将完整的 Pig Latin 脚本写到文件中,并使用 –x command 来执行它。假设我们在一个名为 sample_script.pig 的文件中有一个 Pig 脚本,如下所示。

Sample_script.pig

student = LOAD 'hdfs://localhost:9000/pig_data/student.txt' USING
   PigStorage(',') as (id:int,name:chararray,city:chararray);

Dump student;

现在,你可以按照以下方式执行以上文件中的脚本。

Local mode

MapReduce mode

$ pig -x local Sample_script.pig

$ pig -x mapreduce Sample_script.pig

Note − 我们将在后续章节中详细讨论如何在 Bach modeembedded mode 中运行 Pig 脚本。