使用hadoop对巨大的文本文件进行排序

时间:2013-02-15 14:21:21

标签: sorting hadoop mapreduce cloudera

是否可以使用mapreduce作业按字典顺序对一个巨大的文本文件进行排序?mapreduce作业只有map任务和零减少任务?

文本文件的记录用换行符分隔,文件大小约为1 Terra Byte。

如果任何人都可以提出一种方法来实现对这个庞大文件的排序,那就太棒了。

3 个答案:

答案 0 :(得分:3)

在Map方法中使用TreeSet将整个数据保存在输入拆分中并保留它。最后我得到了排序文件!

答案 1 :(得分:2)

实际上有一个与Hadoop捆绑在一起的排序示例。您可以通过检查类org.apache.hadoop.examples.Sort来查看示例代码的工作原理。这本身效果很好,但是如果您想要更灵活地排序,可以检查this

答案 2 :(得分:0)

使用分区程序在Hadoop中进行排序 - 您可以编写自定义分区程序,以根据业务逻辑需求进行排序。有关编写自定义分区程序http://jugnu-life.blogspot.com/2012/05/custom-partitioner-in-hadoop.html

的信息,请参阅此链接

我不主张使用普通的vanilla linux排序命令对数TB的数据进行排序 - 您需要拆分数据以适应内存以对大文件大小进行排序:Parallel sort in linux

使用Hadoop MergeSort更好,更方便:Hadoop MergeSort

您可以在此处查看Yahoo Hadoop团队(现在是Hortonworks)的一些Hadoop排序基准和分析:Hadoop Sort benchmarks