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