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