1. pig简介
2. 安装pig
3. 实战pig
4. 深入pig
5. 参考资料及代码下载
<1>. Pig简介
pig 是hadoop项目的一个拓展项目, 用以简化hadoop编程(简化的程度超乎想象啊),并且提供一个更高层次抽象的数据处理能力,同时能够保持hadoop的简单和可靠性。
<2>. 安装pig
2.1 下载pig:[点击下载 ]pig安装包
2.2 解压下载完成的pig安装包:
xuqiang@ubuntu:~/hadoop/src/pig$ tar zxvf pig-0.8.1.tar.gz
export PIG_HOME=~/hadoop/src/pig/pig-0.8.1/
export HADOOP_CONF_DIR=~/hadoop/src/hadoop-0.21.0/conf
export PIG_CLASSPATH=~/hadoop/src/hadoop-0.21.0/conf
为了使新设置的环境变量生效,使用如下命令:
mapred.job.tracker=hadoop3:8021 //jobtracker在哪台机器
13/12/14 05:00:18 INFO pig.Main: Logging error messages to: /root/pig_1387026018896.log
2013-12-14 05:00:19,284 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: file:///
集群模式
13/12/14 05:01:10 INFO pig.Main: Logging error messages to: /root/pig_1387026070803.log
2013-12-14 05:01:11,283 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://hadoop3
2013-12-14 05:01:11,661 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: hadoop3:8021
此时表明pig已经正确安装。
问题:如果每次重新连接服务器执行pig都报:JAVA_HOME is not set.
觖决:可以修改pig的进脚本:vim /home/gbz/pig/bin/pig(我的pig脚本位置),加入JAVA_HOME=/usr/local/java即可
<3>. Pig实战
在pig下载的安装包,解压完成了之后,有一个tutorial目录,我们使用里面的数据来开始pig学习。如果tutorial目录下没有存在pigtutorial.tar.gz文件的话,那么需要使用ant来编译出这个文件:
xuqiang@ubuntu:~/hadoop/src/pig/pig-0.8.1$ ant
xuqiang@ubuntu:~/hadoop/src/pig/pig-0.8.1$ cd tutorial/
.
我们下面将主要分析excite-small.log文件,该文件的数据结构如下:
UserID TimeStamp SearchQuery
我们首先将excite-small.log加载到一个变量(也称之为alias)中,我们将使用该变量来表示这个数据集:
grunt> log = load 'excite-small.log' as (user, time, query);
这时如果想要查看该log的结构:
grunt> describe log;
这是如果我们想要查看该log文件的前4行的话:
grunt> lmt = limit log 4;
这时将打印出log文件的前四行数据。
<4>. 深入pig
4.1 Utility and file commands
4.2 Data read/write operators
4.3 Diagnostic operators诊断操作
DESCRIBE |
返回关系的架构。 |
DUMP |
将关系的内容转储到屏幕。 |
EXPLAIN |
显示 MapReduce 执行计划。 |
4.4 Data type and schemes
pig中有6个基本数据类型和3个复合数据类型,基本数据类型如下:
复合数据类型:
pig中数据模型中能够允许数据类型的嵌套,类似于xml/json格式。
4.5 Expression and functions
pig能够支持常见运算符。
同时在pig中提供了一些内建函数。
这里我们没有给出示例,将在下面给出示例。
4.6 Retional operators
首先编写两个数据文件A:
0,1,2
数据文件B:
0,5,2
xuqiang@ubuntu:~/hadoop/src/pig/pig-0.8.1/tutorial/pigtmp$ pig -x local
加载数据A:
grunt> a = load 'A' using PigStorage(',') as (a1:int, a2:int, a3:int);
grunt> b = load 'B' using PigStorage(',') as (b1:int, b2:int, b3:int);
grunt> c = union a, b;
grunt> dump c;
(0,5,2)
将c分割为d和e,其中d的第一列数据值为0,e的第一列的数据为1($0表示数据集的第一列):
grunt> split c into d if $0 == 0, e if $0 == 1;
grunt> dump d;
(0,1,2)
(1,3,4)
选择c中的一部分数据:
grunt> dump f;
查看g:
grunt> dump g;
(2,{(0,1,2),(0,5,2)})
grunt> h = group c all;
(all,{(0,1,2),(1,3,4),(0,5,2),(1,7,8)})
grunt> i = foreach h generate COUNT($1);
grunt> dump i;
这里可能出现Could not resolve counter using imported: [, org.apache.pig.built in., org.apache.pig.impl.builtin. ]的情况,这是需要使用register命令来注册pig对应的jar版本。
接下俩试一下jon操作:
取出c的第二列$1和$1 * $2,将这两列保存在k中:
grunt> k = foreach c generate $1, $1 * $2;
grunt> dump k;
(5,10)
4.7 Working with UDF(user defined function)
pig能够支持两种类型的UDFs:eval和load/store,其中load/store的自定义函数主要是用来加载和保存特定的数据格式;eval自定义函数主要用来进行常规的数据转换。
1. eval
如果想要实现自定义的eval类型的函数,那么基本的做法是首先编写一个类继承自EvalFunc<T>这个抽象类,同时需要重写这个类的一方法:
abstract public T exec(Tuple input) throws IOException;
该方法传入的类型是Tuple类型。
如果调用udf时使用的是:udf(ARG1, ARG2);那么调用input.get(0)将得到ARG1,同理input.get(1)得到的是ARG2,input.getSize()得到传递的参数的数量,这里就是2.
下面我们就开始编写udf UPPER.java,将UPPER.java文件保存到myudfs目录下:
import java.io.IOException;
import org.apache.pig.EvalFunc;
import org.apache.pig.data.Tuple;
import org.apache.pig.impl.util.WrappedIOException;
public class UPPER extends EvalFunc < String >
{
public String exec(Tuple input) throws IOException {
if (input == null || input.size() == 0 )
return null ;
try {
String str = (String)input.get( 0 );
return str.toUpperCase();
} catch (Exception e){
throw WrappedIOException.wrap( " Caught exception processing input row " , e);
}
}
编译该文件,同时生成该jar文件:
xuqiang@ubuntu:~/hadoop/src/pig/pig-0.8.1/myudfs$ cd ..
studetn2 , 2 , 2
student3 , 3 , 3
student4 , 4 , 4
在pig中测试该udf:
xuqiang@ubuntu:~/hadoop/src/pig/pig-0.8.1$ pig -x local
注册该udf:
加载数据:
( STUDETN2 )
( STUDENT3 )
( STUDENT4 )
<5>. 参考资料及代码下载
http://pig.apache.org/docs/r0.8.1/udf.html#How+to+Write+a+Simple+Eval+Function
<Hadoop In Action>
相关推荐
### 大数据Pig实战知识点 #### Hadoop数据分析平台背景 在大数据分析领域,Hadoop作为一个开源的分布式存储与计算框架,拥有着广泛的应用。然而,随着数据量的日益增加,对性能的要求越来越高,传统的关系型数据库...
apache pig 基础及应用,urldecode row_number web日志分析 根据 用户行为 做出 简易的 相似度 判断。
《Programming Pig》是一本关于Pig编程的实战指南,主要面向希望了解和使用Pig进行数据处理的读者。这本书详细介绍了如何通过Pig实现MapReduce的功能原理,非常适合Pig编程的初学者。 Pig是一个开源项目,它建立在...
8. **案例研究与实战项目**:为了巩固理论知识,书中可能会包含实际案例,让读者学习如何解决特定的数据处理问题,并提供完整的Pig脚本示例。 9. **最新版本特性**:第二版通常会包含Pig的最新版本更新和改进,如新...
本书内容全面,对Hadoop整个技术体系进行了全面的讲解,不仅包括HDFS、MapReduce、YARN等核心内容,而且还包括Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa等与Hadoop技术相关的重要内容。实战性强,不仅为...
《Hadoop实战第二版》是由陆嘉恒编著的一本深度解析Hadoop技术的专业书籍,其源码的提供为读者提供了亲自动手实践Hadoop的机会,增强了学习效果。Hadoop作为大数据处理领域的基石,它的核心在于分布式存储系统HDFS...
此外,Hive还支持与其他大数据组件如Pig、Spark、Impala等集成,以提供更高效的数据处理能力。 总结来说,这个实战数据集为我们提供了研究大数据分析和数据仓库应用的宝贵资源。通过对`video`和`user`数据的Hive...
【peppapig_SCSS.rar】是一个压缩包文件,其命名可能源于儿童动画...通过深入学习以上知识点,并结合"peppapig_SCSS.rar"中的源代码,可以逐步构建并理解整个学生选课系统的运作机制,同时提升Django和SCSS的实战技能。
内容全面,对hadoop整个技术体系进行了全面的讲解,不仅包括hdfs和mapreduce这两大核心内容,而且还包括hive、hbase、mahout、pig、zookeeper、avro、chukwa等与hadoop相关的子项目的内容。实战性强,为各个知识点...
, 该书强调动手、强调实战,以风趣幽默的语言和一系列生动的实战应用案例,系统地讲授了Hadoop的核心技术和扩展技术,包括: HDFS、MapReduce、HBase、Hive、Pig、Cassandra、Chukwa和ZooKeeper等,并给出了3个完整...
##### 3.5 Pig实战 - **Pig Latin语法**:熟悉Pig Latin的基本语法,包括加载数据、转换数据、保存数据等操作。 - **高级功能**:了解Pig提供的高级功能,如JOIN操作、GROUP BY等。 - **自定义函数开发**:学习如何...
除了基础的Hadoop知识,书中还会涉及Hadoop生态系统中的其他重要组件,如HBase(一个分布式NoSQL数据库),Hive(基于Hadoop的数据仓库工具),Pig(用于大数据分析的高级脚本语言),以及Spark(一种快速、通用的大...
《实战Hadoop中的源码》一书,由刘鹏教授编写,旨在引领读者深入理解Hadoop这一开源大数据处理框架的内部机制,为通往云计算的道路上提供一条清晰的路径。Hadoop是Apache软件基金会的重要项目,它以其分布式计算模型...
6. **Hadoop与其他组件集成**:Hadoop通常与其他大数据工具如Hive、Pig、Spark等配合使用,源代码可能包含这些组件的集成示例。 7. **实战案例**:书中的实战部分可能涉及实际业务场景,如网页点击流分析、日志处理...
此外,还讲解了HBase的高级特性,如MapReduce、Hive、Pig等与HBase的集成,以及如何进行复杂的查询操作。 《HBase实战》是一本实践导向的书籍,通过实际的项目案例,展示了HBase在不同场景下的应用,如实时分析、...
Pig是一个高级脚本语言(称为Pig Latin),它简化了对Hadoop中的大数据集的查询操作。Pig Latin表达式被编译成一系列的MapReduce任务。Pig被设计为适合于数据流式处理,它不需要显式地指定数据如何在各个MapReduce...
标题:"Hadoop硬实战"的知识点解析: 1. Hadoop基础知识:Hadoop是一个开源的Java平台,用于存储和处理大型数据集,它通过MapReduce模型来对数据进行分布式处理。Hadoop的核心构成包括HDFS(Hadoop Distributed ...
内容全面,对hadoop整个技术体系进行了全面的讲解,不仅包括hdfs和mapreduce这两大核心内容,而且还包括hive、hbase、mahout、pig、zookeeper、avro、chukwa等与hadoop相关的子项目的内容。实战性强,为各个知识点...
总的来说,"hadoop权威指南及实战.rar"这个压缩包提供了一个全面学习Hadoop的资源库,无论是理论知识还是实战经验,都能从中获取。对于想要快速掌握大数据技术的人来说,这是一份非常宝贵的资料。通过深入阅读和实践...