- Apache Pig 教程
- Apache Pig - 首页
- Apache Pig 简介
- Apache Pig - 概述
- Apache Pig - 架构
- Apache Pig 环境
- Apache Pig - 安装
- Apache Pig - 执行
- Apache Pig - Grunt Shell
- Pig Latin
- Pig Latin - 基础
- 加载 & 存储操作符
- Apache Pig - 读取数据
- Apache Pig - 存储数据
- 诊断操作符
- Apache Pig - 诊断操作符
- Apache Pig - Describe 操作符
- Apache Pig - Explain 操作符
- Apache Pig - Illustrate 操作符
- 分组 & 连接
- Apache Pig - Group 操作符
- Apache Pig - Cogroup 操作符
- Apache Pig - Join 操作符
- Apache Pig - Cross 操作符
- Pig Latin 内置函数
- Apache Pig - Eval 函数
- 加载 & 存储函数
- Apache Pig - Bag & Tuple 函数
- Apache Pig - 字符串函数
- Apache Pig - 日期时间函数
- Apache Pig - 数学函数
- Apache Pig 有用资源
- Apache Pig - 快速指南
- Apache Pig - 有用资源
- Apache Pig - 讨论
Apache Pig - 执行
在上一章中,我们解释了如何安装 Apache Pig。在本章中,我们将讨论如何执行 Apache Pig。
Apache Pig 执行模式
您可以以两种模式运行 Apache Pig,即 **本地模式** 和 **HDFS 模式**。
本地模式
在这种模式下,所有文件都安装并从您的本地主机和本地文件系统运行。不需要 Hadoop 或 HDFS。此模式通常用于测试目的。
MapReduce 模式
MapReduce 模式是指我们使用 Apache Pig 加载或处理 Hadoop 文件系统 (HDFS) 中存在的数据。在此模式下,每当我们执行 Pig Latin 语句来处理数据时,后台都会调用一个 MapReduce 作业来对 HDFS 中存在的数据执行特定操作。
Apache Pig 执行机制
Apache Pig 脚本可以通过三种方式执行,即交互模式、批处理模式和嵌入模式。
**交互模式** (Grunt shell) - 您可以使用 Grunt shell 以交互模式运行 Apache Pig。在此 shell 中,您可以输入 Pig Latin 语句并获取输出(使用 Dump 操作符)。
**批处理模式** (脚本) - 您可以通过将 Pig Latin 脚本写入扩展名为 **.pig** 的单个文件中来以批处理模式运行 Apache Pig。
**嵌入模式** (UDF) - Apache Pig 提供了在 Java 等编程语言中定义我们自己的函数(**U**ser **D**efined **F**unctions)并在脚本中使用它们的机制。
调用 Grunt Shell
您可以使用 **-x** 选项以所需的模式(本地/MapReduce)调用 Grunt shell,如下所示。
| 本地模式 | MapReduce 模式 |
|---|---|
命令 - $ ./pig –x local |
命令 - $ ./pig -x mapreduce |
**输出** - ![]() |
**输出** - ![]() |
这两个命令中的任何一个都会为您提供如下所示的 Grunt shell 提示符。
grunt>
您可以使用 **‘ctrl + d’** 退出 Grunt shell。
调用 Grunt shell 后,您可以通过直接在其中输入 Pig Latin 语句来执行 Pig 脚本。
grunt> customers = LOAD 'customers.txt' USING PigStorage(',');
以批处理模式执行 Apache Pig
您可以将整个 Pig Latin 脚本写入一个文件中,并使用 **-x 命令** 执行它。假设我们在一个名为 **sample_script.pig** 的文件中有一个 Pig 脚本,如下所示。
Sample_script.pig
student = LOAD 'hdfs://:9000/pig_data/student.txt' USING
PigStorage(',') as (id:int,name:chararray,city:chararray);
Dump student;
现在,您可以执行上面文件中脚本,如下所示。
| 本地模式 | MapReduce 模式 |
|---|---|
| $ pig -x local Sample_script.pig | $ pig -x mapreduce Sample_script.pig |
**注意** - 我们将在后续章节中详细讨论如何在 **批处理模式** 和 **嵌入模式** 下运行 Pig 脚本。

