order by需要加載所有數(shù)據(jù)到reduce中排序,排序方法可能是冒泡、快排、歸并,無論如何都要加載所有數(shù)據(jù)order by limit創(chuàng)建一個大小為limit的緩存數(shù)組,采用插入法進行排序,把每行數(shù)與數(shù)組內(nèi)的數(shù)比較,大的話就插入,每插入一個數(shù)都有一個數(shù)被擠出去,保證每次比較的次數(shù)都只有l(wèi)imit次,因此嚴格模式允許order by limit,雖然比較的數(shù)多,但是每次比較的資源消耗很少。
sort by局部排序,最終生成的每個文件都有序但不能保證全局有序sort by limit 相當于sort by+order by limit,先局部排序取TopN,然后讀入多個TopN結(jié)果再全局排序取TopN。