问题描述:现有一批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的更多相关文章

  1. MR案例:CombineFileInputFormat

    CombineFileInputFormat是一个抽象类.Hadoop提供了两个实现类CombineTextInputFormat和CombineSequenceFileInputFormat. 此案 ...

  2. MR案例:倒排索引 && MultipleInputs

    本案例采用 MultipleInputs类 实现多路径输入的倒排索引.解读:MR多路径输入 package test0820; import java.io.IOException; import j ...

  3. 解读:MR多路径输入

    对于在一个MR-Job中使用多路径作为输入文件,一般有三种方法: 1).多次调用,加载不同路径: import org.apache.hadoop.mapreduce.lib.input.FileIn ...

  4. MR案例:小文件处理方案

    HDFS被设计来存储大文件,而有时候会有大量的小文件生成,造成NameNode资源的浪费,同时也影响MapReduce的处理效率.有哪些方案可以合并这些小文件,或者提高处理小文件的效率呢? 1). 所 ...

  5. Swagger 路径过滤 -PreSerializeFilters

    Swagger 默认显示所有api, 如果要做路径过滤,可以这样做. //过滤,只显示部分api app.UseSwagger(c=> { c.PreSerializeFilters.Add(( ...

  6. 反向路径过滤——reverse path filter

    原文地址:反向路径过滤——reverse path filter 作者:pwp_cu 反向路径过滤——reverse path filter 一.原理先介绍个非对称路由的概念参考<Underst ...

  7. MR案例:Reduce-Join

    问题描述:两种类型输入文件:address(地址)和company(公司)进行一对多的关联查询,得到地址名(例如:Beijing)与公司名(例如:Beijing JD.Beijing Red Star ...

  8. MR案例:倒排索引

    1.map阶段:将单词和URI组成Key值(如“MapReduce :1.txt”),将词频作为value. 利用MR框架自带的Map端排序,将同一文档的相同单词的词频组成列表,传递给Combine过 ...

  9. Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)

    不多说,直接上代码. 代码 package zhouls.bigdata.myWholeHadoop.HDFS.hdfs6; import java.io.IOException;import jav ...

随机推荐

  1. POJ 3233 Matrix Power Series(矩阵快速幂)

    Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 19338 Accepted: 8161 ...

  2. KDevelop使用笔记【中文教程】

    *师从官方文档: https://userbase.kde.org/KDevelop4/Manual/zh-cn https://docs.kde.org/trunk5/en/extragear-kd ...

  3. greenplum-cc-web4.0监控安装

    简介: 本文是基于greenplum5.7,greenplum-cc-web4.0安装的. 一.安装greenplum监控的数据库以及创建用户(在gpadmin用户下安装) 1.开启greenplum ...

  4. textarea文本输入区内实现换行

    在文本间输入 即可成功换行 <textarea class="mytextarea">1.第一行 2.第二行 </textarea>

  5. 隐藏Apache、nginx和PHP的版本号的配置方法

    最近提示说有漏洞,暴露apache.nginx和php的版本号.网上搜了下,整理的方法如下: 首先说apache 在http.conf文件里添加下面两行,默认是没有的 ServerSignature ...

  6. Apache2.4部署python3.6+django2.0项目

    一.安装apache Apache是非常有名的web服务器软件,如果想让我们web项目运行几乎离不开它. Apache官方网站:http://httpd.apache.org/ 根据自己的环境,选择相 ...

  7. golang-imagick图片去除边框(黑边,白边,),添加中文字

    图片去除边框(黑边,白边) package main import ( "fmt" "github.com/gographics/imagick/imagick" ...

  8. SpringBoot-基于Maven工程使用SpringBoot

    Spring Boot SpringBoot是一个社区反馈推动的项目.SpringBoot可以说是至少五年来Spring乃至整个Java社区最有影响力的项目之一.SpringBoot主要包括以下特性: ...

  9. 如何停止requestAnimationFrame方法启动的动画

    HTML5/CSS3时代,我们要在web里做动画选择其实已经很多了:(1) 你可以用CSS3的animattion+keyframes;(2) 你也可以用css3的transition; (3) 你还 ...

  10. java 多线程 day09 线程池

    import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.c ...