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. Hibernate学习笔记--------3.缓存

    一.一级缓存 一级缓存又称为“Session缓存”或者“会话级缓存”,通过Session从数据库查询实体时,会把实体在内存中存储起来,下一次查询同一实体时不再再次执行sql语句查询数据库,而是从内存中 ...

  2. CentOS7安装Tomcat8.X

    安装说明 安装环境:CentOS7安装方式:源码安装软件:apache-tomcat-8.0.30.tar.gz下载地址:http://tomcat.apache.org/download-80.cg ...

  3. C++获取文件长度

    ifstream fin("example.txt", ios::binary); fin.seekg(0, ios::end); // 设置指针到文件流尾部 streampos ...

  4. Ubuntu 安装php_intl 扩展

    PHP Intl 类在I18n的网站中真的很方便,允许你依赖在终端用户区域,很容易的输出正确的日期格式. 在使用 yii2-app-ecom , 初始化之后,访问首页出现了: The default ...

  5. 比较ASP生成静态HTML文件的几种方法

    将动态页面转换生成静态Html文件有许多好处,比如生成html网页有利于被搜索引擎收录(特别是对接受动态参数的页面).前台访问时,脱离了数据访问,减轻对数据库访问的压力,加快网页打开速度. 当然,凡事 ...

  6. Jquery Ajax Get示例

      $.ajax({ type: "GET", url:"ajax_url.php", cache: false, data:{'action':'ABC',' ...

  7. iOS 返回到指定的ViewController

    for (UIViewController *vc in self.navigationController.viewControllers) { if ([vc isKindOfClass:[MyV ...

  8. Objective-C 学习笔记(Day 3,上)

    ------------------------------------------- 类方法   ①类方法:        + 开头的方法(定义的过程形式和对象方法一样,只不过 + 开头,这是唯一的 ...

  9. 12天学好C语言——记录我的C语言学习之路(Day 2)

    12天学好C语言--记录我的C语言学习之路 Day 2: 我建议大家每一天学习之前都仅凭记忆去敲前一天敲过的最后一个程序,或者敲前一天你认为最难最长的一个程序,如果一晚上的睡眠之后不看书还能敲的出来, ...

  10. 给String添加reverse方法

    我们知道Array有个reverse方法,String则没有,但可以Array来实现,字符串有个split方法可以轻易的将String转换为Array. String.prototype.revers ...