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

  • 相关阅读:
    docker的应用部署
    docker容器的数据卷
    找到最终的安全状态 深搜
    park和unpark方法详解
    docker容器相关命令
    docker鏡像相關命令
    join方法底层实现
    Elasticsearch启动过程错误汇总
    MySQL 8.0.12 报错The table does not comply with the requirements by an external plugin. (errno 3098)
    docker login 密码查看和加密保存
  • 原文地址:https://www.cnblogs.com/i80386/p/4324902.html
Copyright © 2011-2022 走看看