gpt4 book ai didi

hadoop - hadoop mapreduce.partition.keypartitioner.options不起作用

转载 作者:行者123 更新时间:2023-12-02 22:02:40 25 4
gpt4 key购买 nike

我只想在key的第一个字段与reducer相同的位置对数据进行分区。例如,[ 11 * * * ] data。
但是似乎keypartitioner不起作用,我真的不知道为什么。

环境
enter image description here

Hadoop版本
enter image description here

代码run.sh在这里--->

#!/usr/bin/sh


hadoop fs -rm -r /training/likang/tmp2
hadoop fs -rm /training/likang/tmp/testfile
hadoop fs -put testfile1 /training/likang/tmp/testfile


hadoop-streaming -D stream.map.output.field.separator="\t" \
-D stream.num.map.output.key.fields=2 \
-D map.output.key.field.separator="\t" \
-D mapreduce.partition.keypartitioner.options=-k1,1 \
-D mapreduce.job.maps=2 \
-D mapreduce.job.reduces=2 \
-D mapred.job.name="lk_filt_rid" \
-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner \
-input /training/likang/tmp/testfile \
-output /training/likang/tmp2 \
-mapper "cat" -reducer "cat"

hadoop fs -cat /training/likang/tmp2/part-00000
echo "------------------"
hadoop fs -cat /training/likang/tmp2/part-00001

输入文件为testfile1 --->
11  5   333 111
11 5 777 000
11 3 888 999
11 9 988 888
11 7 234 2342
11 5 4 4
15 9 230 134
12 8 232 834
15 77 220 000
15 33 256 399
11 5 999 888
15 9 222 111
14 88 372 233
15 9 66 77
11 5 821 221
11 0 11 11
15 0 22 22
12 0 33 33
14 0 44 44

结果是,所有的 [ 11 * * * * ]数据都没有发送到相同的reducer。有人知道为什么吗?谢谢。

enter image description here

最佳答案

现在我知道,删除此行很有用

-D map.output.key.field.separator="\t" \ 

删除此选项后,结果将是正确的,但由于该原因而更加混乱。
map.output.key.field.separator的默认值似乎只是一个Tab,但是在我在这里写完之后,这会导致错误.........

关于hadoop - hadoop mapreduce.partition.keypartitioner.options不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52051615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com