pig-配置(hadoop)-wordCount

来源:互联网 发布:如何成为淘宝达人步骤 编辑:程序博客网 时间:2024/06/06 12:46
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
        -- 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来查看
原创粉丝点击