2011-08-16 44 views
3

如何使用Hadoop mapreduce編程獲得排序的o/p。Hadoop mapreduce編程

有沒有什麼辦法以排序順序得到最終的鍵值對。 (通過鍵或值)。

任何指針在此非常讚賞。

謝謝 [R

回答

3

「的Hadoop權威指南」第2版介紹了第8章全球排序的代碼樣本。

6

默認情況下,MapReduce會按鍵輸入記錄。

但是,它可能會幫助您下載最新的Hadoop版本並查看它們的示例。也有不同的排序示例。

如果您需要更多關於排序順序的信息,可以如何更改它。

鑰匙的排序順序由RawComparator,其被發現如下控制:

  1. 如果屬性mapred.output.key.comparator.class設置,即類 的一個實例是用過的。 (上JobConf的setOutputKeyComparatorClass()方法是將該屬性設置一個方便的方式 )

  2. 否則,密鑰必須WritableComparable的子類,並使用該註冊 比較的鍵類。

  3. 如果沒有註冊比較,則RawComparator用於該反序列 被比較成對象並委託給WritableCompar 能的的compareTo()方法的字節流。 這些規則強化了爲什麼爲您自己的自定義可寫類註冊RawCompara 驅動器優化版本的重要性,並且通過設置自己的比較器可以直接覆蓋 排序順序。

+1

內置的WritableComparable類將正確比較,因此如果它是LongWritable,它將按降序排序。如果您想要自己的排序順序(例如按文本字符串排序),然後在該順序內按時間戳排序,則需要一個自定義鍵和一個自定義排序比較器和自定義分組比較器。 – Drizzt321