Streaming支持多路输出(SuffixMultipleTextOutputFormat)

如下示例:

hadoop streaming \

-input /home/mr/data/test_tab/ \

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

-outputformatorg.apache.hadoop.mapred.lib.SuffixMultipleTextOutputFormat\   # 指定outputformat为org.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

mapreduce 多路输出的更多相关文章

  1. hadoop streaming 多路输出 [转载]

    转载 http://www.cnblogs.com/shapherd/archive/2012/12/21/2827860.html hadoop 支持reduce多路输出的功能,一个reduce可以 ...

  2. MapReduce修改输出的文件名

    MapReduce默认输出的文件名称格式如下:part-r-00000 自定义名称,比如editName,则输出的文件名称为:editName-r-0000,此方法没有彻底修改整个文件名,只修改了一部 ...

  3. ffmpeg转码多路输出(二)

    ffmpeg转码多路输出(二)本程序支持一路输入多路输出,可根据map配置自行添加,第1路为纯拷贝,其他2路经过编解码,格式转换缩放和重采样,纯拷贝方面不同格式适应方面还没做全,以后补充.本程序适合多 ...

  4. 老版mapreduce跑streaming作业多路输出的方法

    1. 继承MultipleTextOutputFormat实现自己的输出类. 2. 重写generateFileNameForKeyValue方法,返回输出的名字,可通过"/"分割 ...

  5. MapReduce排序输出

    hadoop的map是具有输出自动排序功能的~继续学习~ import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.c ...

  6. 9.2.1 hadoop mapreduce任务输出的默认排序

    任务的默认排序 MapTask和ReduceTask都会默认对数据按照key进行排序,不管逻辑上是否需要.默认是按照字典顺序排序,且实现该排序的方法是快速排序.但是map和reduce任务只能保证单个 ...

  7. MapReduce设置输出分隔符

    conf.set("mapred.textoutputformat.ignoreseparator","true"); conf.set("mapre ...

  8. MapReduce数据流-输出

  9. 如何去掉MapReduce输出的默认分隔符

    我们在用MapReduce做数据处理的时候,经常会遇到将只需要输出键或者值的情况,如context.write(new Text(record), new Text("")),这样 ...

随机推荐

  1. 关于增强for循环

    1 增强for循环增强for循环是for的一种新用法!用来循环遍历数组和集合. 1.1 增强for的语法for(元素类型 e : 数组或集合对象) {}例如:int[] arr = {1,2,3};f ...

  2. ArrayBlockingQueue和LinkedBlockingQueue分析

        JAVA并发包提供三个常用的并发队列实现,分别是:ConcurrentLinkedQueue.LinkedBlockingQueue和ArrayBlockingQueue. Concurren ...

  3. Thinkphp twig

    参考链接:thinkphp的twig模板实现 使用composer安裝好Thinkphp 3.2.3 composer create-project topthink/thinkphp your-pr ...

  4. 关于IO的一些数字

    http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/people ...

  5. 如何防止SWF文件被反编译

    这篇文章的标题所提出的问题的答案是“不可能”.至少对我来说是不可能的.借助适当的工具,我们可以反编译任何SWF文件.所以,不要将重要的信息置于SWF文件中.SWF文件中不要包含个人的帐号或者密码. 我 ...

  6. (八)Hibernate 映射关系

    所有项目导入对应的hibernate的jar包.mysql的jar包和添加每次都需要用到的HibernateUtil.java 第一节:Hibernate 一对一映射关系实现 1,按照主键映射: 2, ...

  7. ###Linux基础 - 1

    点击查看Evernote原文. #@author: gr #@date: 2014-10-11 #@email: forgerui@gmail.com 前言 为什么学习Linux?:-) 酷Cool ...

  8. <a>多颜色标签点击之后保持原色的一次实践, Ext Panel下解决及通用方案思路

    代码为片段, 需要自行设置全部环境方可全部运行. 案例背景 使用Ext开发了一个表格,需要根据一列值来动态设置颜色. 效果如下: 说明: 不同行显示不同的内容, 作为标题行, 可以点击链接到其他地方. ...

  9. 解决VS2012【加载......符号缓慢】的问题

    http://blog.csdn.net/shi0090/article/details/19411777 最近在用VS2012调试时,经常出现"加载......符号缓慢的问题", ...

  10. IP address/地址 检查

    1.Determine if a string is a valid IP address in C Beej's Guide to Network Programming 2.9.14. inet_ ...