MapReduce系列之過濾模式
阿新 • • 發佈:2018-12-04
過濾模式基本有四種:過濾,布隆過濾,Top 10 和去重
過濾:將不感興趣的記錄過濾掉並將需要的資料保留下來
類似用法:select * from table where 條件
示例:map{
if(條件true)
{
context.write();
}
}
布隆過濾:與過濾類似 ,只是他使用了一個獨特的評估函式來作用於每一條記錄。
與普通的過濾有兩點顯著不同:
1、我們過濾記錄的依據是基於記錄是否屬於某個集合而不是基於某些熱門值
2、要使用布隆過濾器來評估集合成員資格
例項 聲望值
Top 10:排名
類似用法:(1)select * from table order by col4 desc limit 10
(2)B=order A by col4 desc;
C=limit B 10;
示例:可以通過job.setNumReduceTasks(1)配置作業只有一個Reducer。遍歷所有的值儲存於TreeMap中,當TreeMap中記錄超過10條時,第一個元素(最小)將會被從map中移除。
去重:求取沒有相似記錄的集合
類似用法:select distinct * from table;
示例:對使用者ID做去重
mapper:提取記錄中使用者的ID,作為輸出的鍵,輸出的值為空型別
Reducer:context.write(key,null)