排序大概分為以下幾類
- MapReducer自帶排序就可以滿足
- 自定義sort規(guī)則鳖敷,只設(shè)置1個Reducer Task
- 自定義Partition實(shí)現(xiàn)區(qū)內(nèi)有序
- 啟用多個Reducer Task 并實(shí)現(xiàn)全局有序减牺,MapReducer提供了TotalSortPartitioner
-
為了滿足速度快的要求,對不同的key采用不一樣的查找方法,分別是
- 如果key是BinaryComparable(可以認(rèn)為是字符串類型)的話會構(gòu)建trie,時間復(fù)雜度是O(n), n是樹的深度.
- 如果是非BinaryComparable類型就構(gòu)建BinarySearchNode,用二分查找蔼水,時間復(fù)雜度O(log(n)),n是reduce數(shù)录肯。
-
為了滿足負(fù)載均衡趴腋,提供了三個采樣類,分別是
- IntervalSampler:以一定間隔從分片中選擇鍵论咏,適合排好序的文件
- RandomSampler:以指定的采樣率均勻地從一個數(shù)據(jù)集中選擇樣本优炬。
- SplitSampler:取一片數(shù)據(jù),把這些片數(shù)據(jù)進(jìn)行處理厅贪,選出分區(qū)用的臨界點(diǎn)蠢护,進(jìn)行分區(qū)