过滤模式基本有四种:过滤,布隆过滤,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)