Hadoop Pig 教程:什么是 Apache Pig? Archi结构,示例
我们将从 Pig 的介绍开始
什么是阿帕奇猪?
Pig 是一种高级编程语言,可用于分析大型数据集。Pig 是 Yahoo 开发的成果!
在 MapReduce 框架中,程序需要转换为一系列 Map 和 Reduce 阶段。然而,这不是数据分析师熟悉的编程模型。因此,为了弥补这一差距,在 Hadoop 之上构建了一个名为 Pig 的抽象。
Apache Pig 使人们能够更加专注于 分析大量数据集并减少编写 Map-Reduce 程序的时间。 阿帕奇猪与什么都吃的猪类似, 编程语言 旨在处理任何类型的数据。这就是 Pig 的名字由来!

在本 Apache Pig 初学者教程中,您将学习-
猪 Archi质地
- ArchiPig 的结构由两部分组成:
-
猪拉丁语, 这是一种语言
-
运行时环境, 用于运行 PigLatin 程序。
Pig Latin 程序由一系列操作或转换组成,这些操作或转换应用于输入数据以产生输出。这些操作描述了数据流,由 Hadoop Pig 执行环境将其转换为可执行表示。在底层,这些转换的结果是程序员不知道的一系列 MapReduce 作业。因此,在某种程度上,Hadoop 中的 Pig 允许程序员专注于数据而不是执行的性质。
PigLatin 是一种相对僵化的语言,它使用数据处理中熟悉的关键字,例如 Join、Group 和 Filter。

执行模式:
Hadoop中的Pig有两种执行模式:
-
本地模式:在此模式下,Hadoop Pig 语言在单个 JVM 并使用本地文件系统。此模式仅适用于使用 Hadoop 中的 Pig 分析小数据集
-
Map Reduce 模式:在此模式下,用 Pig Latin 编写的查询将被翻译成 映射简化 作业在 Hadoop 集群上运行(集群可以是伪分布式或完全分布式)。完全分布式集群的 MapReduce 模式对于在大型数据集上运行 Pig 非常有用。
如何下载和安装 Pig
现在,在本 Apache Pig 教程中,我们将学习如何下载和安装 Pig:
在开始实际操作之前,请确保您已安装 Hadoop。将用户更改为“hduser”(Hadoop 配置时使用的 ID,您可以切换到 Hadoop 配置期间使用的用户 ID)
步骤1) 从以下任一镜像站点下载 Pig Hadoop 的稳定最新版本:
http://pig.apache.org/releases.html
选择 tar.gz的 (并不是 源码: 文件下载。
步骤2) 下载完成后,导航到包含下载的 tar 文件的目录,并将 tar 移动到要设置 Pig Hadoop 的位置。在本例中,我们将移动到 /usr/local
移动到包含 Pig Hadoop 文件的目录
cd /usr/local
提取 tar 文件的内容如下
sudo tar -xvf pig-0.12.1.tar.gz
步骤3)。 修改 在〜/ .bashrc 添加Pig相关的环境变量
可选 在〜/ .bashrc 在您选择的任何文本编辑器中保存并进行以下修改-
export PIG_HOME=<Installation directory of Pig> export PATH=$PIG_HOME/bin:$HADOOP_HOME/bin:$PATH
步骤4) 现在,使用以下命令获取此环境配置
. ~/.bashrc
步骤5) 我们需要重新编译 PIG 支持 Hadoop 2.2.0
以下是执行此操作的步骤 -
转到 PIG 主目录
cd $PIG_HOME
安装 Ant
sudo apt-get install ant
注意:下载将开始,并将根据您的网速消耗时间。
重新编译 PIG
sudo ant clean jar-all -Dhadoopversion=23
请注意,在此重新编译过程中会下载多个组件。因此,系统应连接到互联网。
另外,如果这个过程卡在某个地方,并且你在命令提示符下超过 20 分钟没有看到任何动静,那么请按 Ctrl + c 并重新运行相同的命令。
在我们的例子中,需要 20 分钟
步骤 6) 测试 猪 使用命令安装
pig -help
Pig 脚本示例
我们将使用 Pig Scripts 来查找每个国家销售的产品数量。
输入: 我们的输入数据集是一个 CSV 文件, 2009 年 XNUMX 月销售额.csv
步骤 1) 启动 Hadoop
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
步骤 2) 大数据中的 Pig 从 高密度文件系统 以MapReduce模式进行并将结果存储回HDFS。
拷贝文件 2009 年 XNUMX 月销售额.csv (存储在本地文件系统上, ~/输入/SalesJan2009.csv) 到 HDFS (Hadoop 分布式文件系统) 主目录
在此 Apache Pig 示例中,文件位于文件夹输入中。如果文件存储在其他位置,则指定该名称
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal ~/input/SalesJan2009.csv /
验证文件是否确实被复制。
$HADOOP_HOME/bin/hdfs dfs -ls /
步骤3) Pig 配置
首先,导航到 $PIG_HOME/conf
cd $PIG_HOME/conf
sudo cp pig.properties pig.properties.original
可选 pig.properties 使用您选择的文本编辑器,并使用指定日志文件路径 pig.log文件
sudo gedit pig.properties
Loger 将利用此文件来记录错误。
步骤4) 运行命令“pig”,它将启动 Pig 命令提示符,这是一个交互式 shell Pig 查询。
pig
步骤5)在 Pig 的 Grunt 命令提示符中,按顺序执行以下 Pig 命令。
— A. 加载包含数据的文件。
salesTable = LOAD '/SalesJan2009.csv' USING PigStorage(',') AS (Transaction_date:chararray,Product:chararray,Price:chararray,Payment_Type:chararray,Name:chararray,City:chararray,State:chararray,Country:chararray,Account_Created:chararray,Last_Login:chararray,Latitude:chararray,Longitude:chararray);
执行此命令后按 Enter。
— B.按 Country 字段分组数据
GroupByCountry = GROUP salesTable BY Country;
— C. 对于 '按国家分组',生成形式为 -> 国家名称: 销售产品数量 的结果字符串
CountByCountry = FOREACH GroupByCountry GENERATE CONCAT((chararray)$0,CONCAT(':',(chararray)COUNT($1)));
执行此命令后按 Enter。
— D. 将数据流的结果存储在目录中 ‘猪产量销售额’ 在 HDFS 上
STORE CountByCountry INTO 'pig_output_sales' USING PigStorage('\t');
此命令需要一些时间才能执行。完成后,您应该会看到以下屏幕
步骤6) 通过命令界面可以看到结果如下:
$HADOOP_HOME/bin/hdfs dfs -cat pig_output_sales/part-r-00000
也可以通过 Web 界面查看结果:
通过 Web 界面查看结果
可选 http://localhost:50070/
在网络浏览器中。
现在选择 “浏览文件系统” 并导航至 /用户/hduser/pig_output_sales
可选 部分-r-00000