1. 下载pig
http://www.apache.org/dyn/closer.cgi/pig
比如下载 pig-0.10.0.tar.gz
2. 安装pig
tar zxvf pig-0.10.0.tar.gz
将pig/bin目录加入path路径
vi ~/.bash_profile
#add pig/bin to path
export PATH=$PATH:path_to_pig_bin
. .bash_profile
3. 配置pig
在$PIG_HOME/conf/pig.properties下添加 hdfs和mapreduce的端口
-------------
fs.default.name=hdfs://hadoop.master:9000
mapred.job.tracker=hadoop.master:9001
-------------
fs.default.name 和 mapred.job.tracker可以在hadoop机群中namenode节点上的 ${HADOOP_HOME}/conf下的core-site.xml和 mapred-site.xml中找到
4. 运行pig
a). 本地运行 pig -x local, 该方式下使用本地文件,便于测试
b). 使用hadoop, pig 或者 pig -x mapreduce
该方式下使用hdfs中的文件
5. 测试实验-wordCount
a). 编写pig运行脚本-wordCount.pig
b). 将数据文件放入hdfs中
数据文件可以自己编写,也可以使用英文小说,比如 Les_Miserables.txt
hadoop fs -copyFromLocal ./Les_Miserables.txt /hadoop/pig/data/
c). 运行+查看统计结果
运行命令: pig ./wordCount.pig
执行结果在: /hadoop/wordCount.result/下
可以使用 : hadoop fs -tail /hadoop/wordCount.result/part-r-00000来查看
http://www.apache.org/dyn/closer.cgi/pig
比如下载 pig-0.10.0.tar.gz
2. 安装pig
tar zxvf pig-0.10.0.tar.gz
将pig/bin目录加入path路径
vi ~/.bash_profile
#add pig/bin to path
export PATH=$PATH:path_to_pig_bin
. .bash_profile
3. 配置pig
在$PIG_HOME/conf/pig.properties下添加 hdfs和mapreduce的端口
-------------
fs.default.name=hdfs://hadoop.master:9000
mapred.job.tracker=hadoop.master:9001
-------------
fs.default.name 和 mapred.job.tracker可以在hadoop机群中namenode节点上的 ${HADOOP_HOME}/conf下的core-site.xml和 mapred-site.xml中找到
4. 运行pig
a). 本地运行 pig -x local, 该方式下使用本地文件,便于测试
b). 使用hadoop, pig 或者 pig -x mapreduce
该方式下使用hdfs中的文件
5. 测试实验-wordCount
a). 编写pig运行脚本-wordCount.pig
-- load file '/hadoop/pig/data/Les_Miserables.txt' to novel, PigStorage='\n', make sure read all contents in a line.
-- 此处PigStorage应当设置为'\n',这样可以保证解析完整的一行数据
-- 很多网上的例子没有设置,是错误的!
-- 默认情况下,PigStorage为 tab, 此时如果一行中包含tab, 将导致tab后面的数据不能参与计数.
novel = load 'novel.txt' using PigStorage('\n') as (line:chararray);
-- split line into words by token tab or space or comma or dot
-- 单词分隔符设置为 tab 空格 逗号 点号
words = foreach novel generate flatten(TOKENIZE(line,'\t ,.')) as word;
-- group words by word
grp = group words by word;
result = foreach grp generate group,COUNT(words) as count;
-- store result to 'wordCount.result/'
store result into '/hadoop/wordCount.result';
b). 将数据文件放入hdfs中
数据文件可以自己编写,也可以使用英文小说,比如 Les_Miserables.txt
hadoop fs -copyFromLocal ./Les_Miserables.txt /hadoop/pig/data/
c). 运行+查看统计结果
运行命令: pig ./wordCount.pig
执行结果在: /hadoop/wordCount.result/下
可以使用 : hadoop fs -tail /hadoop/wordCount.result/part-r-00000来查看