如果我在每一行都有一个随机整数的文件,并希望使用Hadoop对文件进行排序,那么我的mapper和reducer的输入/输出键和值是什么?
答案 0 :(得分:1)
雅虎拥有sorted Peta和Tera字节的数据。其他人(包括Google)定期执行此操作,您可以在互联网上搜索排序基准。雅虎已经发布了paper如何做到这一点。
'org.apache.hadoop.examples.terasort'包中包含用于排序数据的示例代码。
在Cloudera博客here上找到更多信息。有一些内置类可以使排序更容易。
订单总分区HADOOP-3019。作为TeraSort记录的衍生产品,Hadoop现在拥有用于高效生成全局排序输出的库类。 InputSampler用于对输入数据的子集进行采样,然后使用TotalOrderPartitioner将地图输出划分为大致相等大小的分区。非常简洁的东西 - 非常值得一看,即使你不需要使用它。
您还可以找到更多信息here。
答案 1 :(得分:0)
更理论的答案:考虑不同的排序算法(快速排序,合并排序,冒泡排序等)。
由于我们知道您可以在线性时间内合并两个排序列表,因此通过在其上放置“合并”步骤来并行化任何排序算法非常简单。因此,您可以使用多种选项来完成此任务。
terasort比这更聪明,但是,因为简单的拆分和合并不会解决你所有的问题....当你有很多分裂时,你的最后“合并”步骤对应一个大规模的缩减步骤。