大象教程
首页
Spark
Hadoop
HDFS
MapReduce
Hive
Pig 教程
Pig 教程
Pig 体系结构
Pig 安装
Pig 执行
Pig Grunt Shell
Pig Latin 基础
Pig 读取数据
Pig 存储数据
Pig Dump 运算符
Pig Describe 运算符
Pig Explain 运算符
Pig illustrate 运算符
Pig GROUP 运算符
Pig Cogroup 运算符
Pig JOIN 运算符
Pig Cross 运算符
Pig Union 运算符
Pig SPLIT 运算符
Pig FILTER 运算符
Pig DISTINCT 运算符
Pig FOREACH 运算符
Pig ORDER BY 运算符
Pig LIMIT 运算符
Pig eval(求值) 函数
Pig Load & Store 函数
Pig Bag & Tuple 函数
Pig 字符串(String) 函数
Pig 日期时间函数
Pig 数学函数
#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。在此外壳程序中,您可以输入Pig Latin语句并获取输出(使用Dump运算符)。 - 批处理模式(脚本): 您可以通过在单个扩展名为.pig的文件中编写Pig Latin脚本,以批处理模式运行Apache Pig 。 - 嵌入模式(UDF): Apache Pig提供了定义我们自己的函数(的规定USER Defined Functions)在诸如Java编程语言,并在我们的脚本中使用它们。 ##调用Grunt Shell 您可以使用-x选项以所需的方式(本地/MapReduce)调用Grunt shell,如下所示。 ###本地模式 本地模式命令如下: ```bash $ pig -x local 2021-01-11 15:09:08,420 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 2021-01-11 15:09:08,690 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL 2021-01-11 15:09:08,690 INFO pig.ExecTypeProvider: Picked LOCAL as the ExecType 2021-01-11 15:09:08,825 [main] INFO org.apache.pig.Main - Apache Pig version 0.17.0 (r1797386) compiled Jun 02 2017, 15:41:58 2021-01-11 15:09:08,825 [main] INFO org.apache.pig.Main - Logging error messages to: /home/jc2182/pig/pig_1610348948819.log 2021-01-11 15:09:08,939 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /home/jc2182/.pigbootup not found 2021-01-11 15:09:09,131 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address 2021-01-11 15:09:09,133 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:/// 2021-01-11 15:09:09,537 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - io.bytes.per.checksum is deprecated. Instead, use dfs.bytes-per-checksum 2021-01-11 15:09:09,618 [main] INFO org.apache.pig.PigServer - Pig Script ID for the session: PIG-default-47ff99a2-5aab-497f-9966-0ffebd44f115 2021-01-11 15:09:09,618 [main] WARN org.apache.pig.PigServer - ATS is disabled since yarn.timeline-service.enabled set to false grunt> ``` ###MapReduce 模式 MapReduct模式命令如下: ```bash $ pig -x mapreduce 2021-01-11 15:11:00,724 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL 2021-01-11 15:11:00,726 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE 2021-01-11 15:11:00,726 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType 2021-01-11 15:11:00,816 [main] INFO org.apache.pig.Main - Apache Pig version 0.17.0 (r1797386) compiled Jun 02 2017, 15:41:58 2021-01-11 15:11:00,816 [main] INFO org.apache.pig.Main - Logging error messages to: /home/jc2182/pig/pig_1610349060803.log 2021-01-11 15:11:00,856 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /home/jc2182/.pigbootup not found 2021-01-11 15:11:01,150 [main] WARN org.apache.hadoop.util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 2021-01-11 15:11:01,179 [main] INFO org.apache.hadoop.conf.Configuration.deprecation - mapred.job.tracker is deprecated. Instead, use mapreduce.jobtracker.address 2021-01-11 15:11:01,179 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost:9000 2021-01-11 15:11:02,161 [main] INFO org.apache.pig.PigServer - Pig Script ID for the session: PIG-default-424e89f8-dc16-49eb-89dc-5584cb0c47f7 2021-01-11 15:11:02,161 [main] WARN org.apache.pig.PigServer - ATS is disabled since yarn.timeline-service.enabled set to false grunt> ``` **注意**:MapReduce模式必需启动Hadoop 这两个命令都会为您提供Grunt shell提示符,如下所示。 ```bash grunt> ``` 您可以使用'ctrl + d'退出Grunt shell。 调用Grunt shell之后,您可以通过直接在其中输入Pig Latin语句来执行Pig脚本。 ```bash grunt> customers = LOAD 'customers.txt' USING PigStorage(','); ``` ##以批处理模式执行Apache Pig 您可以在文件中编写整个Pig Latin脚本,然后使用–x命令执行它。我们假设在名为sample_script.pig的文件中有一个Pig脚本,如下所示。 脚本文件 Sample_script.pig ```bash student = LOAD 'hdfs://localhost:9000/pig_data/student.txt' USING PigStorage(',') as (id:int,name:chararray,city:chararray); Dump student; ``` 现在,您可以在上述文件中执行脚本,如下所示。 - 本地模式 `$ pig -x local Sample_script.pig` - mapreduce 模式 `$ pig -x mapreduce Sample_script.pig` **注意**:我们将在后续章节中详细讨论如何在Bach模式和嵌入式模式下运行Pig脚本。
加我微信交流吧