Chinaunix首页 | 论坛 | 博客
  • 博客访问: 100597
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2018-05-23 12:43
文章分类

全部博文(41)

文章存档

2016年(2)

2015年(3)

2014年(16)

2013年(20)

分类: HADOOP

2014-09-03 16:06:24

pig是一个框架,用来利用hadoop进行计算的框架,有自己的一套语法,可以非常方便的书写计算代码。
简单使用过程:
1.解压pig包,然后重新命名文件名
2.进入配置文件conf/pig.properties的配置文件里面添加两行
       fs.default.name=hdfs://hadoop0:9000
       mapred.job.reacker=hadoop0:9001
3保存退出后执行bin目录的pig进行命令行

 PIG简单使用,小例子 - frank_gwf - frank_gwf的博客
 PIG简单使用,小例子 - frank_gwf - frank_gwf的博客

4.命令行操作:(使用pig完成手机号码完成流量统计数据情况如图)
#加载:
A=   LOAD ’/kpi‘ AS (f0:chararray,f1:chararray,f2:chararray,f3:chararray,f4:chararray,f5:chararray,f6:long,f7:long,ayf8:long,f9:long,f10:chararray)      #  fX:后面的是类型。常用类型有int floart double lang chararray bytearray     A相当于表的别名
 
DUMP A  查看A的文件,其实你看输出就发现输出其实是一个MAPREDUCER任务,

#或者过滤A中有用的字段  
B= FOREACH A GENERATE f1,f6,f7,f8,f9

DUMP B  #基础执行mr任务,取数据

#对B中数据按照书记好f1进行分组 语法都在pig解压文件的里面的index.html文件里面
C =GROUP B BY f1;
#DUMP C 继续执行任务

#对分组后的记录按照分组字段进行累加

D=FOREACH C GENERATE group,SUM(B.f6),SUM(B.f7),SUM(B.f7)SUM(B.f8) #为什么加B 使用DESCRIBE C
DUMP D
#保存最终结果到HDFS到文件中
STORE D.INTO '/out'

缺点是要熟悉他的语法,当然他是进一步封装MR。

我们可以把上面的命令放到一个文件中执行,在bin目录下 使用vi hello.pig
然后把上面的代码全部写到里面
保存退出
使用 pig hello.pig 然后就得到我们想要的结果了

个人理解:p本人对pig使用较少,初步理解就是它能够做到把复杂的逻辑简单化,例如我在MR中写逻辑方法的时候,有的时候对应也必然是很繁琐的,而pig可以做到把复杂的逻辑分布简化,如果工作中逻辑实在难写,那么我们可以考虑分布处理,然后再把分布处理的逻辑整合。

总体来看这个框架还是用起来比较简单的,本文只是使用了很小的一个例子,具体请看官方文档

阅读(1482) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~