order by會對輸入做全局排序,因此只有一個Reducer(多個Reducer無法保證全局有序),然而只有一個Reducer,會導(dǎo)致當(dāng)輸入規(guī)模較大時,消耗較長的計算時間。這樣很可能會超過單個節(jié)點的磁盤和內(nèi)存存儲能力導(dǎo)致任務(wù)失敗。
sort by的數(shù)據(jù)只能保證在同一個reduce中的數(shù)據(jù)可以按指定字段排序。
使用sort by你可以指定執(zhí)行的reduce個數(shù)(通過set mapred.reduce.tasks=n來指定),對輸出的數(shù)據(jù)再執(zhí)行歸并排序