内容
1. Apache Pig执行简介
当开发人员创建Pig脚本时,首先将其发送到本地文件系统中 ,当开发者提交Pig Script时,它会与Pig Latin Compiler进行交互。 此外,编译器会分解任务并运行一系列MR作业。 同时,Pig编译器从HDFS中检索数据。 然后,运行MR作业输出文件再次进入HDFS。
2. Apache Pig执行模式
Apache Pig执行中有两种模式,如本地模式和HDFS模式。 我们来详细讨论一下:
本地模式
在这种模式下,所有文件都安装并运行在本地主机和本地文件系统上。 通常使用这种模式进行测试。
在这种模式下,Pig在单个JVM上执行并访问文件系统。特别是对于处理小数据集,本地模式更好。本地模式下,并行Map的执行是不可能的。
用户可以提供-x本地进入Pig本地执行模式. Pig总是在加载数据时查找本地文件系统路径。
MapReduce模式
当我们使用Apache Pig加载或处理存在于Hadoop文件系统(HDFS)中的数据时,就是MapReduce模式。另外,当我们执行Pig Latin语句来处理数据时,在这种模式下,在后端调用MapReduce作业来对存在于HDFS中的数据执行特定的操作。
在这种模式下,用户可以拥有适当的Hadoop集群设置和安装。默认情况下,Apache Pig以MR模式安装。Pig将查询转换为MapReduce作业并在Hadoop集群上运行。这种作为MapReduce的模式运行在分布式集群上。
3.Apache Pig 执行机制
有三种方式可以执行Apache Pig脚本,如交互模式,批处理模式和嵌入模式。
交互模式(Grunt shell)
通过使用Grunt shell,我们可以以交互模式运行Apache Pig。 通过使用Dump操作符,我们可以在此Shell中输入Pig Latin语句并获取输出。
批处理模式(脚本)
通过使用.pig扩展名将Pig Latin脚本写入单个文件,我们可以以批处理模式运行Apache Pig。
嵌入式模式(UDF)(Embeded Mode)
通过在脚本中使用用户定义函数,Pig提供了使用Java等编程语言定义自己的函数。
4.调用Grunt Shell
通过使用-x选项,我们可以调用所需模式下的Grunt shell(local / MapReduce)。
本地模式
1. $ ./pig –x local
MapReduce模式
1. $ ./pig -x mapreduce
使用'ctrl + d',可以退出Grunt shell。
我们可以在调用Grunt shell之后直接输入Pig Latin语句来执行Pig脚本。
1. grunt> customers = LOAD 'customers.txt' USING PigStorage(',');
以批处理模式执行Apache Pig
使用-x命令,可以在文件中编写完整的Pig Latin脚本并执行它。 假设我们在一个名为sample_script.pig的文件中有一个Pig脚本。
1.Sample_script.pig 2.student = LOAD 'hdfs://localhost:9000/pig_data/student.txt' USING 3.PigStorage(',') as (id:int,name:chararray,city:chararray); 4.Dump student;
本地模式
pig -x local Sample_script.pig
MapReduce模式
1. $ pig -x MapReduce Sample_script.pig