Posted on 2014-06-04 22:14 
tangtb 阅读(5937) 
评论(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
  