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