- 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 操作符
- 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 脚本。
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 脚本,如下所示。
本地模式 | 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://127.0.0.1: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
我们还在同一个 HDFS 目录中有一个名为sample_script.pig的示例脚本。此文件包含对student关系执行操作和转换的语句,如下所示。
student = LOAD 'hdfs://127.0.0.1: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://127.0.0.1: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)
广告