hadoop 指定 key value分隔符
原文:http://wingmzy.iteye.com/blog/1260570
hadoop中的map-reduce是处理<key,value>这样的键值对,故指定<key,value>的分割符等参数可以分成三类:
map输出时分割符
分桶时的分隔符
reduce输出时的分割符
下面分别叙述:
1. map输出时分割符
参数:
stream.map.output.field.separator
作用:
指定map输出时的分割符
stream.num.map.output.key.fields
指定输出按照分隔符切割后,key所占有的列数
举例:
input数据:
2,2,c,c,c,c
参数配置:
-mapper "cat" # map 为分布式的cat命令
-reducer "" #reduce为空 /
-jobconf stream.map.output.field.separator=',' /
-jobconf stream.num.map.output.key.fields=2 /
即按照','逗号分隔后,去前2列作为key
output数据:
2,2 c,c,c,c #其中key为2,2 value为c,c,c,c
2. 分桶时的分隔符
map.output.key.field.separator
指定map输出<key,value>对之后,其中key内部的分割符
num.key.fields.for.partition
指定分桶时,按照分隔符切割后,用于分桶key所占的列数
举例:
map的output数据:
2,2 c,c,c,c
参数配置:
-jobconf map.output.key.field.separator=',' /
-jobconf num.key.fields.for.partition='1' /
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner /
output数据:
这样用于partition分桶的key就为:2
注意,这里分桶不应该用默认的HashPartitioner
3. reduce输出时的分割符
这个与map类似,分别用于reduce输出时分隔符以及key占有的列数
stream.reduce.output.field.separator
stream.num.reduce.output.key.fields
也可以通过代码实现,如下
mapreduce 默认情况下 key/value 分隔符为:“\t”
测试的输出如下:
我们可以在代码中进行设置来自定义 key/value 输出分隔符:在代码中添加如下一行代码:
conf.set("mapred.textoutputformat.separator", ";"); //此处以”;“作为分割符,后边介绍为什么这么修改
修改代码后,测试修改结果:
修改原因:
我们checkout hadoop-1.2.1版本
打开文件:TextOutputFormat.java
我们可以看到如下一行代码:
String keyValueSeparator= conf.get("mapred.textoutputformat.separator",
"\t");
代码的意思是:读取设置的key/value输出分隔符,如果没有读取到,默认使用 "\t"
所以我们就在任务执行前设置名称为:mapred.textoutputformat.separator 的自定义值 即可
hadoop 指定 key value分隔符的更多相关文章
- 高效率遍历Map以及在循环过程中移除 remove指定key
//高效率遍历Map以及在循环过程中移除 remove指定key //使用iter循环的时候 可以在循环中移除key,for在循环的过程中移除会报错哦 //本方法效率高 Iterator iter = ...
- 如何从二维数组中的多个key中获取指定key的值?
精华 LOVEME96 2016-10-21 10:40:19 浏览(1512) 回答(3) 赞(0) 新手求教:二维数组中一般会有多个key,如果我们要获得指定key的值,应该怎么做? 问题标签: ...
- C++ map修改指定key的value
对于修改C++指定key的value,网上查了很多,都说直接insert就会覆盖原来的值,是否是这样的呢? C++ Code 12345678910111213141516171819202122 ...
- Flink 自定义source和sink,获取kafka的key,输出指定key
--------20190905更新------- 沙雕了,可以用 JSONKeyValueDeserializationSchema,接收ObjectNode的数据,如果有key,会放在Objec ...
- 使用python同时替换json多个指定key的value
1.如何同时替换json多个指定key的value import json from jsonpath_ng import parse def join_paths(regx_path,new_val ...
- Redis【知识点】批量删除指定Key
Redis中有删除单条数据的命令DEL但是他没有批量删除多条数据的方法,那我们怎么去批量删除多条数据呢! 第一种方式 /work/app/redis/bin/redis-cli -a youpassw ...
- JDK8 HashMap--getTreeNode()获取红黑树指定key的节点
/*获取红黑树的指定节点*/ final TreeNode<K,V> getTreeNode(int h, Object k) { return ((parent != null) ? r ...
- Hbase rest方式获取指定key范围内的值
代码如下: <?php class Monitor_Hbase{ private $rest_host = "http://10.99.90.39:8130/";//rest ...
- PHP递归获取二维数组中指定key的值
$data = [ "resulterrorCode" => 0, "resultraw" => [ "result" => ...
随机推荐
- Ubuntu 16.04特性及使用基本方法
十招让Ubuntu 16.04用起来更得心应手 Ubuntu 16.04 LTS的这十项新功能,每个Ubuntu用户必须要知道! Ubuntu 16.04 LTS安装好需要设置的15件事
- The JVM found at JAVA_HOME is damaged.Please reinstall or define EXE4J_JAVA_HOME to point to an installed 32-bit JDK or JRE
一.介绍 exe4j是一个很棒的工具,可以把jar包打包成exe进行运行.他可以把jre环境和打包的exe进行集成,使得打包后的exe应用程序可以在没有安装java的机器上运行(前提是要把exe和jr ...
- Python菜鸟之路:Jquery Ajax的使用
Ajax概述 Ajax就是通过 HTTP 请求加载远程数据.通常用于定制一些http请求来灵活的完成前端与后端的数据交互需求. 注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置. J ...
- JavaScript深入理解sort()方法
一. 基本用法 let arr1 = [3, 5, 7, 1, 8, 7, 10, 20, 19] console.log(arr1.sort()) // [1, 10, 19, 20, 3, 5, ...
- Oracle ErrorStack 使用和阅读具体解释
一.概述 在Oracle数据库执行过程中,我们常常会遇到这样或那样的错误.可是错误的提示并不详细,加大了我们在诊断问题时的难度. ErrorStack是Oracle提供的一种对于错误堆栈进行跟踪的方法 ...
- 启动 nodemanger 报错javax.security.sasl.SaslException: GSS initiate failed
最近启动 Hadoop, nodemanger 老挂,报kerberos 验证错误,各种查找原因,时间也同步,kint 也能登录到kerberos,一直找不到原因,最后发现是网关和远端的时间同步,但是 ...
- 021-Spring Boot 测试,Junit方式使用,mock方式,Controller测试
一.概述 二.Junit方式使用 2.1.基本使用 eclipse在新建的类上,右键→new→Junit Test Case,修改一下Source folder,选择src/test/java,下一步 ...
- 笔画宽度变化(C++和matlab算法)
最近一直在看工作方面的书籍,把论文的事情搁置了,之前承诺的贴代码的事一直拖.现在把代码整理发上来,只有核心部分的,都不是我写的,我是网上整理下载的,matlab代码的效果比较差. 全部文件网盘下载地址 ...
- android 对话框中的进度条 (ProgressDialog)
from:http://byandby.iteye.com/blog/817214 显然要定义对话框进度条就要用ProgressDialog,首先我们需要创建ProgressDialog对象,当然这里 ...
- “中兴捧月”比赛之——二叉查找树(BST)树的最短路径Java求解
问题描述: BST树,又称二叉查找树,求其到所有叶子节点路径的最小值 测试用例一: 10 5 20 返回15: 测试用例二: 100 20 70 110 120 10 null null 89 nu ...