• 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

  • 相关阅读:
    Windows系统CMD窗口下,MySQL建库、还原数据库命令操作示例
    Java JPA 报java.lang.IllegalArgumentException: Validation failed for query for method public abstract ...异常的一种原因和解决办法
    MySQL 5.7 执行SQL报错:1055
    Java8使用实现Runnable接口方式创建新线程的方法
    模板方法模式
    策略模式
    观察者模式
    装饰器模式
    原型模式
    单例模式
  • 原文地址:https://www.cnblogs.com/i80386/p/4324902.html
Copyright © 2020-2023  润新知