hadoop 各类key value分隔符参数

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
Hadoop Streaming脚本中,约束关系参数包括以下几个: 1. mapreduce.job.reduces:指定Reduce任务的数量。这个参数可以用来控制输出文件的数量,以及Reduce任务的负载均衡。 2. mapreduce.partition.keypartitioner.options:指定Partitioner的参数。Partitioner用于将Map输出的键值对分配到不同的Reduce任务中。这个参数可以用来控制Partitioner的行为。 3. mapreduce.job.output.key.comparator.class:指定输出键值对的比较器类。这个参数可以用来控制输出文件的顺序。 4. mapreduce.job.output.value.comparator.class:指定输出键值对的值比较器类。这个参数可以用来控制输出文件的顺序。 5. mapreduce.job.output.key.field.separator:指定输出键值对的键和值之间的分隔符。默认情况下,分隔符是制表符。 6. mapreduce.job.output.value.field.separator:指定输出键值对的值之间的分隔符。默认情况下,分隔符是制表符。 7. mapreduce.job.output.key.prefix:指定输出键值对的键的前缀。默认情况下,没有前缀。 8. mapreduce.job.output.key.suffix:指定输出键值对的键的后缀。默认情况下,没有后缀。 9. mapreduce.job.output.value.prefix:指定输出键值对的值的前缀。默认情况下,没有前缀。 10. mapreduce.job.output.value.suffix:指定输出键值对的值的后缀。默认情况下,没有后缀。 这些参数可以在Hadoop Streaming脚本中使用,以控制MapReduce作业的行为。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值