充分利用hadoop的map输出自动排序功能,能够有效提高计算效率。
Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为value,如果没有'/t’分隔符,则整行作为key;这个key/tvalue对又作为该map对应的reduce的输入。
实际上,通过设置参数,可以根据需要将约定满足要求的数据分布到同一个reducer,又可以通过设置map执行参数将数据内容进行一定的排序,从而提高在reducer中的计算效率。

hadoop 中可以提供配置供用户自主设置的分隔符:
-D stream.map.output.field.separator :设置map输出中key和value的分隔符
-D stream.num.map.output.key.fields : 设置map程序分隔符的位置,该位置之前的部分作为key,之后的部分作为value
-D map.output.key.field.separator : 设置map输出中key内部的分割符——备注:基于该分隔符,shuffle对key数值进行排序
-D num.key.fields.for.partition : 指定分桶时,key按照分隔符切割后,其中用于分桶key所占的列数(配合-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 使用)
-D stream.reduce.output.field.separator:设置reduce输出中key和value的分隔符
-D stream.num.reduce.output.key.fields:设置reduce程序分隔符的位置

比如下面的输入数据例子,想要基于前两个数值进行hash分桶,将数据分布到同一个reducer,另一方面又想将前四个数字进行排序。需要这样设置:
-D stream.map.output.field.separator=,
-D stream.num.map.output.key.fields=4
-D map.output.key.field.separator=,
-D num.key.fields.for.partition=2

1 1,2,1,1,1
2 1,2,2,1,1
3 1,3,1,1,1
4 1,3,2,1,1
5 1,3,3,1,1
6 1,2,3,1,1
7 1,3,1,1,1
8 1,3,2,1,1
9 1,3,3,1,1 

转载于:https://www.cnblogs.com/fisherinbox/p/7289712.html

hadoop streaming怎么设置key相关推荐

  1. Hadoop Streaming框架使用(三)

    前两篇文章介绍了Hadoop Streaming框架的使用方法.由于篇幅所限,并没有介绍其中的高级使用方法,但是有一些用法还是相当常见的.今天对一些高级用法进行一个简单的说明,希望能给大家一些启发. ...

  2. Hadoop Streaming框架使用(一)

      Streaming简介 link:http://www.cnblogs.com/luchen927/archive/2012/01/16/2323448.html Streaming框架允许任何程 ...

  3. hadoop streaming部分问题总结

    来源: https://hadoop.apache.org/docs/r1.2.1/streaming.html#Generic+Command+Options 文档还是要好好看,中间遇到的好多问题文 ...

  4. 利用Hadoop Streaming处理二进制格式文件

    Hadoop Streaming是Hadoop提供的多语言编程工具,用户可以使用自己擅长的编程语言(比如python.php或C#等)编写Mapper和Reducer处理文本数据.Hadoop Str ...

  5. Hadoop Streaming

    Hadoop Streaming Hadoop Streaming Hadoop Streaming     Streaming工作原理     将文件打包到提交的作业中     Streaming选 ...

  6. hadoop streaming编程小demo(python版)

    大数据团队搞数据质量评测.自动化质检和监控平台是用django,MR也是通过python实现的.(后来发现有orc压缩问题,python不知道怎么解决,正在改成java版本) 这里展示一个python ...

  7. Hadoop Streaming详解

    一: Hadoop Streaming详解 1.Streaming的作用 Hadoop Streaming框架,最大的好处是,让任何语言编写的map, reduce程序能够在hadoop集群上运行:m ...

  8. Hadoop Streaming 编程

    1.概述 Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为ma ...

  9. Hadoop Streaming编程实例

    Hadoop Streaming是Hadoop提供的多语言编程工具,通过该工具,用户可采用任何语言编写MapReduce程序,本文将介绍几个Hadoop Streaming编程实例,大家可重点从以下几 ...

最新文章

  1. 最小二乘法的本质是什么?
  2. 在64位linux下编译32位程序
  3. [云炬创业基础笔记] 第四章测试2
  4. Go gin内嵌静态资源go-bindata的安装及使用(GVA)
  5. 历史上的今天:编程语言中null引用的十亿美元错误
  6. EXEC函数族的一般规律
  7. 换SSD硬盘,重装系统,一阵子忙乱
  8. UVA - 11520 Fill the Square
  9. Ubuntu与Docker -- Docker安装、使用、容器环境搭建
  10. Redis Zadd 命令 Redis 有序集合(sorted set)Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新
  11. 欧盟ETSI关于汽车雷达的规定
  12. 稻盛和夫《活法》读书笔记
  13. android 邮箱 推荐,Android邮箱谁最棒?最新热门邮箱App横向测试
  14. 俄语学习之——字母及发音对照表
  15. 深入理解裸机与RTOS开发模式
  16. Windows 语音引擎TTS修复
  17. UITextField类对象左视图leftView无效--iOS开发
  18. 低碳生活进行时!国产“芯”RK3568创造智慧出行新体验
  19. 使用hicanu组装hifi基因组的方法介绍
  20. LeetCode 11.Container With Most Water

热门文章

  1. linux 重启oracle_学习Linux前需要知道的事
  2. xshell修改编辑文件并保存
  3. linux 下安装minio并配置
  4. sublime php错误提示,sublime中检查php语法错误
  5. xdebug断点调试原理
  6. 直接插入排序的python实现
  7. linux C(hello world)三个数最大和三个数最新
  8. 桌面虚拟化的架构模块化
  9. 关于“100g文件全是数组,取最大的100个数”解决方法汇总
  10. 【汇编优化】之arm64/AARCH64汇编优化