全域性排序
需求:根據使用者每月使用的流量按照使用的流量多少排序
介面->writablecomparable
排序操作在hadoop中屬於預設的行為。預設按照字典順序排序。
排序的分類:
1)部分排序
2)全排序
3)輔助排序
4)二次排序
封裝類,直接完成排序
public class flowbean implements writalbecomparable
public flowbean(long upflow, long dfflow)
setter
getter
@override
public void readfields(datainput in) throws exception
@override
public void write(dataoutput out) throws exception
@override
public int compareto(flowbean o)
@override
public string tostring()
}public class flowsortreducer extends reducer
}//2、切割
string fields = line.split("\t");
//3、取出關鍵字段
long upflow = long.parselong(fields[1]);
long dfflow = long.parselong(fields[1]);
//4、寫出到reduce 階段
context.write(new flowbean(upflow,dfflow), new text(field[0]))}}
public class flowsortdriver
}分割槽加排序
public class phonenumpartitioner extends partitionerelse if("137".equals(phonenum))else ("138".equals(phonenum))
return partitioner;}}
diriver類
hadoop mr 輔助排序
輔助排序 需求 訂單資料 求出每個訂單中最貴的商品?訂單id正序,成交金額倒序。結果檔案三個,每個結果檔案只要一條資料 public class orderbean implements writablecomparable public orderbean int order id,double ...
Hadoop MR程式設計中main 函式引數注入
下面介紹mapreduce的主要的六個類,只有了解了這六個類的作用,才能在編寫程式中知道哪個類是要自己實現,哪些類可以呼叫預設的類,才能真正的做到游刃有餘,關於需要自己編寫的類 使用者制定類 可以參考 inputformat類。該類的作用是將輸入的檔案和資料分割成許多小的split檔案,並將spli...
MR 全域性排序 多reducer
在資料量大的情況下,使用單reducer進行全域性排序的方式明顯效率較低,可次採用多reducer的方式。在map中進行分桶,分桶方式自定。usr bin python import sys base count 10000 try for line in sys.stdin ss line.str...