参考炼数成金课程及hadoop权威指南
本次课程主要讲述pig
pig可以看做是hadoop的客户端软件,可以连接到hadoop集群进行数据分析工作。pig方便不熟悉java的用户,使用一种较为简便的类似于SQL的面向数据流的语言pig Latin进行数据处理,是一种轻量级的脚本语言。
pig可以看成是个映射器,pig latin是被映射成mapreduce来执行的。
下载:
在官网上下载pig,有包括debian在内的各种版本可供下载
编辑环境变量:
这是centos系统
进入grunt(pig的shell名称) shell(本地模式,连接的不是hadoop的集群,是本地的文件系统)
pig的工作模式:
1.上面说的本地模式
2.mapreduce模式(集群模式)
设置path,增加指向hadoop/bin
设置PIG_CLASSPATH环境变量
然后进入grunt shell,在集群模式下直接打pig即可
pig的使用:
官网pig.apace.org
运行方法:
三种
1.脚本(pig XXX.pig) 2.grunt 3.嵌入式
grunt 自动补全机制(补全命令,不能补全文件名什么的) Eclipse插件pigpen Autocomplete文件
grunt shell常用命令
ls、cd、cat命令
copyToLocal
hdfs拷贝到本地
也可以运行普通的shell命令
sh ..............
pig latin语言:
数据类型:
Bag:表 Tuple:行,记录 Field:属性 pig不要求同一个bag里面的各个tuple有相同数量或相同类型的field
pig latin常用语句:
load:指出载入数据的方法
foreach:逐行扫描进行某种处理
filter:过滤行
dump:把结果显示到屏幕
store:把结果保存到文件
下面以hadoop权威指南的例子做一个讲解:(找每一年中的最大温度)
第一行load是从hadoop的文件系统里读入文件放到records里面然后指出区分每一列,第一列year,字符串类型,后两个类似
第二条命令filter是过滤,后面跟着过滤条件,赋给fltered_records
第三条是group命令是以year为聚合条件,产生结果
(1940,{{1949,111,1},{1949,333,2}})
第四条命令是逐行扫描,然后求出每一年最大温度