MR案例:路径过滤PathFilter
问题描述:现有一批cookie日志,按照日期进行存放,如目录 “dir/2015-08-08” 下存放2015-08-08这一天的所有cookie。而目录 “/2015-08-08/” 下又根据数据文件名称的不同存放不同项目的cookie,如 “project-flag-cookie” 文件中存放的是 flag 项目相关的cookie。
实际需求:统计出某一天属于项目A的唯一cookie数是多少?(唯一cookie是指去重)
1.自定义PathFilter类由于项目是根据文件名字来区分,所以就要把文件名不符合条件的过滤掉。
//Job配置文件设置
FileInputFormat.setInputPathFilter(job, CookieFilter.class); //自定义PathFilter类
public class CookieFilter implements PathFilter{ @Override
public boolean accept(Path path) { if (StringUtils.split(path.getName(), StringUtils.ESCAPE_CHAR, '-')[1].equals("A") {
return true;
}
return false;
}
}
2.去重并计数
Class Map extends Mapper<Longwritable, Text, Text, IntWritable> method map(){ context.write( cookie , new IntWritable(1)); //Key:cookie Value:1
} Class Reduce extends Reducer<Text, IntWritable, Text, IntWritable> method reduce(){ for(IntWritable i : v2s){ Sum += i.set(); context.write(cookie , Sum); //Key:cookie Value:Sum
}
}
2.HDFS中的文件名通配与过滤
hdfs通配符和Linux的相一致。若存在如下目录:
/test/in/logs/2015/08/07/log-A-2015080701
/test/in/logs/2015/08/07/log-A-2015080702
/test/in/logs/2015/08/07/log-A-2015080703
/test/in/logs/2015/08/08/log-A-2015080801
/test/in/logs/2015/08/08/log-A-2015080802
1).只处理log-A-2015080701和log-A-2015080702两个文件.
①输入路径指定"/test/in/logs/2015/08/07/log-A-201508070{1,2}"
②自定义PathFilter类,重写其中的accept()方法
2).处理全部文件.
输入路径指定"/test/in/logs/2015/08/*/*"
MR案例:路径过滤PathFilter的更多相关文章
- MR案例:CombineFileInputFormat
CombineFileInputFormat是一个抽象类.Hadoop提供了两个实现类CombineTextInputFormat和CombineSequenceFileInputFormat. 此案 ...
- MR案例:倒排索引 && MultipleInputs
本案例采用 MultipleInputs类 实现多路径输入的倒排索引.解读:MR多路径输入 package test0820; import java.io.IOException; import j ...
- 解读:MR多路径输入
对于在一个MR-Job中使用多路径作为输入文件,一般有三种方法: 1).多次调用,加载不同路径: import org.apache.hadoop.mapreduce.lib.input.FileIn ...
- MR案例:小文件处理方案
HDFS被设计来存储大文件,而有时候会有大量的小文件生成,造成NameNode资源的浪费,同时也影响MapReduce的处理效率.有哪些方案可以合并这些小文件,或者提高处理小文件的效率呢? 1). 所 ...
- Swagger 路径过滤 -PreSerializeFilters
Swagger 默认显示所有api, 如果要做路径过滤,可以这样做. //过滤,只显示部分api app.UseSwagger(c=> { c.PreSerializeFilters.Add(( ...
- 反向路径过滤——reverse path filter
原文地址:反向路径过滤——reverse path filter 作者:pwp_cu 反向路径过滤——reverse path filter 一.原理先介绍个非对称路由的概念参考<Underst ...
- MR案例:Reduce-Join
问题描述:两种类型输入文件:address(地址)和company(公司)进行一对多的关联查询,得到地址名(例如:Beijing)与公司名(例如:Beijing JD.Beijing Red Star ...
- MR案例:倒排索引
1.map阶段:将单词和URI组成Key值(如“MapReduce :1.txt”),将词频作为value. 利用MR框架自带的Map端排序,将同一文档的相同单词的词频组成列表,传递给Combine过 ...
- Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs6; import java.io.IOException;import jav ...
随机推荐
- 160614、Eclipse下JRebel6.2.0热部署插件安装、破解及配置
标签: 这两天在做后台管理系统,前端框架用Bootstrap,后端用SpringMVC+Velocity.在开发过程中,经常需要对界面进行微调,调整传参等,每次更改一次java代码,就得重新部署一次, ...
- UIAlertAction 改变字体颜色
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil pre ...
- mysql 字符集研究
一.创建一个测试数据库 及一个测试用的表.均使用默认的编码方式. show variables like 'char%': mysql> show variables like 'char%'; ...
- react setstate
1.prevstate参数 https://segmentfault.com/q/1010000008177874 2.不是实时渲染 http://bbs.reactnative.cn/topic/3 ...
- linux 实用命令
从一台机器远程连接到另一台机器: ssh platform@192.168.155.116 从一台机器发送文件到另一台机器: scp /home/weihuang/vie-zyzj.jar platf ...
- notepade++使用
Notepad++也可以实现双视图/双窗口对比显示,目前最新版本(6.32)只能支持双视图显示,而且只能支持左右视图,希望后续版本能得到改进. 我们打开两个需要对比显示的源文件 默认的情况下是分成了两 ...
- python手写bp神经网络实现人脸性别识别1.0
写在前面:本实验用到的图片均来自google图片,侵删! 实验介绍 用python手写一个简单bp神经网络,实现人脸的性别识别.由于本人的机器配置比较差,所以无法使用网上很红的人脸大数据数据集(如lf ...
- Python 函数的使用小结
函数的好处:提高代码复用性,简化代码,代码可扩展. 函数只有调用的时候才会被执行. 1.参数: 形参&实参:位置参数,属于必填参数:默认值参数,为非必填参数,没有传值时使用默认值:关键字参数: ...
- SQL Server排名函数与排名开窗函数
什么是排名函数?说实话我也不甚清楚,我知道 order by 是排序用的,那么什么又是排名函数呢? 接下来看几个示例就明白了. 首先建立一个表,随便插入一些数据. ROW_NUMBER 函数:直接排序 ...
- CGlib和JDK动态代理
一.CGlib动态代理 JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了.CGLib采用了非常底层的1:字节码技术,其原理是通过字节 ...