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 ...
随机推荐
- Spring的AOP-----HelloWord
这里就一个计算器开发为例1搭建环境-搭配好Spring的AOP开发环境导入以下这些包:2建立好核心处理模块的类ArithmeticCalculator: package com.jeremy.spri ...
- node jar sh
https://nodejs.org/api/child_process.html Node.js v11.1.0 Documentation Index View on single page Vi ...
- requests设置Authorization
headers = {"Authorization", "Bearer {}".format(token_string)} r = requests.get(& ...
- 【转】UML中类与类之间的5种关系表示
一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extends明确标识,在设计时一 ...
- Geometric Progression---cf 567C(求组合方式,map离散)
题目链接:http://codeforces.com/contest/567/problem/C 题意就是有n个数现在要让 ai aj ak 构成公比为K的等比数列(i < j < k) ...
- error: https://packages.elastic.co/GPG-KEY-elasticsearch: import read failed(2).
安装filebeat报错: curl: (35) SSL connect errorerror: https://packages.elastic.co/GPG-KEY-elasticsearch: ...
- 【开发者笔记】按List中存放对象的某一字段计数的问题
如题,假设有如下表t_info: name date info a 20127-12-20 xxxx描述 b 20127-12-20 yyyyy描述 c 20127-12-21 zzz描述 d 201 ...
- 机器学习算法(优化)之二:期望最大化(EM)算法
EM算法概述 (1)数学之美的作者吴军将EM算法称之为上帝的算法,EM算法也是大家公认的机器学习十大经典算法之一.EM是一种专门用于求解参数极大似然估计的迭代算法,具有良好的收敛性和每次迭代都能使似然 ...
- centOS7下安装laravel + composer
1.wget https://dl.laravel-china.org/composer.phar -O /usr/local/bin/composer chmod a+x /usr/local/bi ...
- boost单元测试框架
头文件: #include <boost/test/unit_test.hpp> 编译加:-lboost_unit_test_framework 单元测试: 需要定义BOOST_TEST_ ...