hadoop0基础班(五)
參考炼数成金课程及hadoop权威指南
本次课程主要讲述pig
pig能够看做是hadoop的client软件。能够连接到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}})
第四条命令是逐行扫描,然后求出每一年最大温度