Posted on 2014-06-04 22:14
tangtb 閱讀(5906)
評論(0) 編輯 收藏 所屬分類:
Hadoop 、
Pig
前置條件
成功安裝配置Hadoop集群
下載并解壓pig安裝包
下載地址:http://pig.apache.org/
解壓pig安裝包:tar -zxvf pig-0.12.0.tar.gz

環境變量
Pig工作模式
本地模式:只需要配置PATH環境變量${PIG_HOME}/bin即可,適用于測試
Mapreduce模式:需要添加環境變量PIG_CLASSPATH=${HADOOP_HOME}/conf/,指向hadoop的conf目錄

本例直接配置為Mapreduce模式
啟動grunt shell
首先確定Hadoop集群已經啟動,使用jps查看進程
[hadoop@appserver ~]$ pig 進入grunt shell

使用help命令查看幫助信息

查看grunt shell命令

以NCDC天氣數據求年最大氣溫為例,準備數據如下(為方便測試每列數據只包含年、氣溫和數據狀態并以冒號分割):

在grunt shell中將ncdc_data.txt存入hdfs中
grunt> copyFromLocal ~/ncdc_data.txt ./

使用Pig latin求年最高氣溫
加載天氣數據
grunt> A = LOAD 'ncdc_data.txt' USING PigStorage(':') AS (year:int, temp:int, quality:int);

過濾數據
grunt> B = FILTER A BY temp != 9999 AND ((chararray)quality matches '[01459]');
或B = FILTER A BY temp != 9999 AND (
quality == 0 OR quality == 1 OR quality == 4 OR quality == 5 OR quality == 9);

按年分組天氣數據
grunt> C = GROUP B BY year;

逐行掃描數據并求最大值和對應的年份(group)
grunt> D = FOREACH C GENERATE group, MAX(B.temp) AS max_temp;

輸出結果
grunt> DUMP D;


存儲結果到文件
grunt> STORE D INTO 'max_temp' USING PigStorage(':');


查看結果
grunt> cat max_temp
