zoukankan      html  css  js  c++  java
  • mapreduce 多路输出

    Streaming支持多路输出(SuffixMultipleTextOutputFormat)

    如下示例:

    hadoop streaming

    -input /home/mr/data/test_tab/

    -output /home/mr/output/tab_test/out19

    -outputformatorg.apache.hadoop.mapred.lib.SuffixMultipleTextOutputFormat   # 指定outputformatorg.apache.hadoop.mapred.lib.SuffixMultipleTextOutputFormat

    -jobconf suffix.multiple.outputformat.filesuffix=a,c,f,abc,cde              # 指定输出文件名的前缀,所有需要输出的文件名必须通过该参数配置,否则job会失败

    -jobconf suffix.multiple.outputformat.separator="#"                        # 设置value与文件名的分割符,默认为“#”,如果value本身含有“#”,则可以通过该参数设置其他的分隔符

    -mapper "cat"

    -reducer "sh reduce.sh"

    -file reduce.sh

    注:标记为红色的参数必须设置,参数说明请见注释

    Map或者reduce里需要在每个记录的reduce追加“#+文件名”

    #!/bin/bash

    while read line

    do

        key=$(echo $line | awk -F' ' '{print $1}')

        value=$(echo $line | awk -F' ' '{print $2}')

        if [ "$key" == "a" ]

        then

            echo"$key       $value#a"

        fi

        if [ "$key" == "c" ]

            then

               echo "$key    $value#c"

           fi

           if [ "$key" =="f" ]

           then

               echo "$key    $value#f"

           fi

           if [ "$key" =="abc" ]

           then

               echo "$key    $value#abc"

           fi

           if [ "$key" =="cde" ]

           then

               echo "$key    $value#cde"

           fi

    done

  • 相关阅读:
    Maven setting配置镜像仓库
    MyBatis配置Mapping,JavaType和JDBCType的对应关系,#与$区别
    Git常用命令
    Js JSON.stringify()与JSON.parse()与eval()详解及使用案例
    例:判断是不是自有属性hasOwnProperty方法
    JS中原型链中的prototype与_proto_的个人理解与详细总结
    原型理解:prototype
    JS中attribute和property的区别
    面试题术语
    函数语法
  • 原文地址:https://www.cnblogs.com/i80386/p/4324902.html
Copyright © 2011-2022 走看看