2011-10-06 448 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比這要聰明得多,但是,因爲簡單地拆分和合並不會解決所有的問題....你最終的「合併」一步對應於一個巨大的一步降低,當你有很多的分裂的。