gpt4 book ai didi

hadoop - 映射器在本地和群集上的行为不同

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

我在Hadoop上运行仅映射作业,以便对键值进行排序,因为它说:“Hadoop在将映射器发出的数据自动发送到reducers之前对其进行了自动排序”。

输入文件

2013-04-15      835352
2013-04-16 846299
2013-04-17 828286
2013-04-18 747767
2013-04-19 807924

我认为Map(second_cloumn,first_column)应该对该文件进行排序,如output1所示。当我在本地计算机上运行它时,它确实完成了。但是,当我在群集上运行此命令时,输出就像在output2中所示。

output1文件
747767  2013-04-18
807924 2013-04-19
828286 2013-04-17
835352 2013-04-15
846299 2013-04-16

output2文件
835352  2013-04-15
747767 2013-04-18
807924 2013-04-19
828286 2013-04-17
846299 2013-04-16

我如何保证它始终像在output1中一样。我愿意就第二栏的排序提出其他建议。

映射器
public class MapAccessTime1 extends Mapper<LongWritable, Text, IntWritable, Text> {

private IntWritable one = new IntWritable(1);
private Text word = new Text();

@Override
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

String line = value.toString();
int val = 0;
StringTokenizer tokenizer = new StringTokenizer(line);
if (!line.startsWith("#")) {
if (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
}
if (tokenizer.hasMoreTokens()) {
val = Integer.parseInt(tokenizer.nextToken());
one = new IntWritable(val);
context.write(one, word);
}
}
}
}

最佳答案

MapOnly作业不会进行混洗和排序。使用身份减少器可以解决我的问题。

关于hadoop - 映射器在本地和群集上的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18054619/

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