2011-10-06 113 views
0

如果我在每行有一个随机整数的文件,并且想要使用Hadoop对文件进行排序,那么我的映射器和Reducer的输入/输出键和值会是什么?Hadoop排序映射并减少键值

+0

详细的解释发布在下面的链接[how-to-produce-sorted-file-using-hadoop](http://sarveshspn.blogspot.in/2012/02/how-to-produce-sorted- file-using-hadoop.html) – seahorse

回答

1

雅虎有sorted Peta和Tera字节的数据。其他人(包括Google)定期执行,您可以在互联网上搜索排序基准。雅虎已经发布了一个paper他们如何做到这一点。

'org.apache.hadoop.examples.terasort'包中有用于排序数据的示例代码。

在Cloudera博客here上找到了更多信息。有一些内置的类可以使排序更容易。

总订单分区HADOOP-3019。作为TeraSort记录的衍生产品,Hadoop现在具有用于高效生成全局排序输出的库类。 InputSampler用于对输入数据的一个子集进行采样,然后使用TotalOrderPartitioner将映射输出分区为大小相等的分区。非常整齐的东西 - 非常值得一看,即使你不需要使用它。

您还可以找到更多信息here

+0

我是Hadoop的新手,你能更具体地了解mapper和reducer的键/值是用来排序上面描述的文件吗? – user176121

+0

正如我在原来的文章中提到,检查[这里](http://stackoverflow.com/questions/7607569/hadoop-what-should-be-mapped-and-what-should-be-reduced)了解更多信息。 –

0

更理论上的答案:考虑不同的排序算法(快速排序,合并排序,冒泡排序等)。

由于我们知道可以在线性时间内合并两个排序列表,因此通过在其上面放置“合并”步骤来并行排序算法非常简单。因此,您可以使用多种选项来完成此任务。

的terasort比这要聪明得多,但是,因为简单地拆分和合并不会解决所有的问题....你最终的“合并”一步对应于一个巨大的一步降低,当你有很多的分裂的。