首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hadoop中的全序分解器

hadoop中的全序分解器
EN

Stack Overflow用户
提问于 2013-10-14 06:08:35
回答 1查看 2.4K关注 0票数 1

我对极权主义者的概念是完全陌生的,我应用了这个概念,但我没有成功地产生全球排序。这是我的输入记录

代码语言:javascript
复制
676576
7489768576
689576857867857
685768578678578675
765897685789675879679587
1
5
6
7
8
9
0
2
3
5
6
9

这是我的地图

代码语言:javascript
复制
public void map(LongWritable key, Text value,
            OutputCollector<NullWritable, Text> outputCollector, Reporter reporter) throws IOException {
        // TODO Auto-generated method stub
        outputCollector.collect(NullWritable.get(),value);

    }

这是我的减速机

代码语言:javascript
复制
public void reduce(NullWritable key, Iterator<Text> values,
            OutputCollector<NullWritable, Text> outputCollector, Reporter reporter) throws IOException {
        // TODO Auto-generated method stub
        while (values.hasNext()) {
            Text text = (Text) values.next();
            outputCollector.collect(key,text);

        }

    }

这是我与工作有关的代码

代码语言:javascript
复制
JobConf jobConf = new JobConf();
jobConf.setMapperClass(TotalOrderMapper.class);
jobConf.setReducerClass(TotalOrderReducer.class);
jobConf.setMapOutputKeyClass(NullWritable.class);
jobConf.setMapOutputValueClass(Text.class);
jobConf.setOutputKeyClass(NullWritable.class);
jobConf.setOutputValueClass(Text.class);
jobConf.setPartitionerClass(TotalOrderPartitioner.class);
jobConf.setInputFormat(TextInputFormat.class);
jobConf.setOutputFormat(TextOutputFormat.class);
FileInputFormat.addInputPath(jobConf, new Path("hdfs://localhost:9000/totalorderset.txt"));
FileOutputFormat.setOutputPath(jobConf, new Path("hdfs://localhost:9000//sortedRecords5.txt"));
Path pa = new Path("hdfs://localhost:9000//partitionfile","_partitions.lst");
TotalOrderPartitioner.setPartitionFile(jobConf,
        pa);
InputSampler.writePartitionFile(jobConf,
        new InputSampler.RandomSampler(1,1));
JobClient.runJob(jobConf);

但是记录没有得到sorted.this是我的输出

代码语言:javascript
复制
676576
7489768576
689576857867857
685768578678578675
765897685789675879679587
1
5
6
7
8
9
0
2
3
5
6
9

我不知道我要去哪里,wrong.could,有人帮我解决问题吗?有人能告诉我输入采样是如何工作的吗? here.thanks。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-14 15:09:40

Mapreduce对键进行排序,因为您正在对nullwritable进行排序,所以根本不进行排序:

代码语言:javascript
复制
outputCollector.collect(NullWritable.get(),value);

您的地图输出键应该是您的输入值!

代码语言:javascript
复制
outputCollector.collect(value, NullWritable.get());

你能试一试吗,让我们知道它是否有效?

第二个注意事项:使用IntWritable代替文本,否则排序将按顺序排列!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19354361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档