1

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

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

如果有人能提出一种方法来实现对这个巨大文件的排序,那就太好了。

4

3 回答 3

3

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

于 2013-02-20T08:30:26.883 回答
2

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

于 2013-02-15T22:18:05.403 回答
0

Hadoop 中的排序是使用分区器完成的 - 您可以编写自定义分区器以根据您的业务逻辑需求进行排序。请参阅此链接以编写自定义分区器 http://jugnu-life.blogspot.com/2012/05/custom-partitioner-in-hadoop.html

我不提倡使用普通的 linux 排序命令对 TB 的数据进行排序——您需要拆分数据以适应内存以对大文件大小进行排序:Linux 中的并行排序

改用 Hadoop MergeSort 会更好、更方便: Hadoop MergeSort

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

于 2013-02-15T14:27:07.340 回答