MapReduce框架排序和分組
前言:
Mapreduce框架就是map->reduce,其中Map中的<key,value>是偏移量和行值,在其之前會使用job.setInputFormatClass定義的InputFormat將輸入的資料集分割成小資料塊splites,同時InputFormat提供一個RecordReder的實現。本例子中使用的是TextInputFormat,他提供的RecordReder會將文字的一行的行號作為key,這一行的文字作為value。這就是自定義Map的輸入是<LongWritable, Text>的原因。
之後呼叫Map類進行split,將其寫入環形記憶體中,待其達到閥值時,對其的80%進行排序排序和分組,這都是在Map和Reduce之間完成,那麼下面我們來看看這些函式類
一、分割槽
參考上一篇部落格:http://blog.csdn.net/gamer_gyt/article/details/47339755
二、排序
參考部落格:http://blog.csdn.net/gamer_gyt/article/details/48025805
按照Key進行排序,其實在每一個Map函式裡就已經預設呼叫了job.setSortComparatorClass(Comparator.class)類進行了排序,但此時只不過對每一個Map函式接受的value(行值)的排序,這裡所說的是map和reduce之間的排序,實現的是對所有的key進行排序
三、分組
job.setGroupingComparatorClass(GroupComparator.class);
如果使用者想自定義排序方式,首先需要實現兩個Comparator並將其按照上面的格式進行配置。每一個Comparator需要繼承WritableComparator基類。如下所示:
public static class GroupComparator extends WritableComparator {
protected GroupComparator() {
super(IntPair.class, true);
}
@Override
public int compare(WritableComparable w1, WritableComparable w2) {
IntPair ip1 = (IntPair) w1;
IntPair ip2 = (IntPair) w2;
return IntPair.compare(ip1.getFirst(), ip2.getFirst());
}
}
這一點在二次排序中深有體現:可以參考http://blog.csdn.net/gamer_gyt/article/details/47315405
相關文章
- MapReduce最佳化之位元組級別快速排序排序
- order by改分組排序排序
- SQL 分組排序group bySQL排序
- MySQL實現分組排序MySql排序
- 利用rownum分組排序去重排序
- MapReduce之WritableComparable排序排序
- Mysql 分組排序的sql寫法MySql排序
- mapreduce框架詳解框架
- MapReduce框架Mapper和Reducer類原始碼分析框架APP原始碼
- Java利用Comparator實現分組排序Java排序
- MapReduce框架-Join的使用框架
- MapReduce應用案例--簡單排序排序
- MapReduce(三):分割槽、排序、合併排序
- MapReduce 二次排序詳解排序
- JAVA將快速將列表分組並排序鍵Java排序
- 資料庫之DQL排序&分組&函式資料庫排序函式
- select查詢之二:分組與排序排序
- SQL 分組排序取最新一條記錄SQL排序
- MapReduce框架Partitioner分割槽方法框架
- Hadoop框架:MapReduce基本原理和入門案例Hadoop框架
- hadoop&spark mapreduce對比 & 框架設計和理解HadoopSpark框架
- javascript: 帶分組資料的Table表頭排序JavaScript排序
- MapReduce 按照Value值進行排序輸出排序
- ForkJoin和氣泡排序組合實現的歸併排序排序
- 輕鬆搞定分組報表中的各種排序排序
- LINQ簡明教程:資料排序、分組、過濾排序
- MapReduce程式設計例項之自定義排序程式設計排序
- Hadoop-MapReduce-TeraSort-大資料排序例子Hadoop大資料排序
- Hadoop 新 MapReduce 框架 Yarn 詳解Hadoop框架Yarn
- Spring框架 - Spring和Spring框架組成Spring框架
- Oracle和MySQL分組查詢GROUP BYOracleMySql
- 分組
- sql分組查詢語句--行內分組(非聚合分組)SQL
- MySQL 分組排序後 → 如何取前N條或倒數N條MySql排序
- 使用Go語言實現簡單MapReduce框架Go框架
- HCE:提升資源利用率的MapReduce框架框架
- Go Web輕量級框架Gin學習系列:路由分組GoWeb框架路由
- 一組關鍵字序列,分別給出用希爾排序、直接選擇排序演算法從小到大排序結果排序演算法