`
小网客
  • 浏览: 1247333 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop对输入路径的过滤问题解决方式

 
阅读更多

需求:

数据格式如下:

/data/input/news/old.dat

/data/input/news/current.dat

/data/input/news/20131001.txt

......

/data/input/news/20131030.txt

/data/input/news/20131031.txt

我们需要计算分析10月份的新闻,其他的暂时不计算,那么就需要做一个过滤操作,input path为新闻根路径即/data/input/news/

 

思路:

基于PathFilter实现

 

实现代码:

fitler:

class TextPathFilter extends Configured implements PathFilter {
	Configuration conf = null;

	@Override
	public Configuration getConf() {
		return conf;
	}

	@Override
	public void setConf(Configuration conf) {
		this.conf = conf;

	}

	@Override
	public boolean accept(Path path) {
		String regex = conf.get("org.test.filter.regex");
		if (regex == null) {
			return true;
		}
		return path.toString().matches(regex);
	}

}

使用方式:

Configuration conf = new Configuration();
conf.set("org.test.filter.regex", "2012[1-12][1-31].txt");
........
TextInputFormat.setInputPathFilter(job, TextPathFilter.class);

 

其他说明:

0.21.0版本之前会报错,错误信息如下:

Caused by: org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://your path
        at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:231)
        at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:248)
        at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:950)
        at org.apache.hadoop.mapred.JobClient.writeSplits(JobClient.java:967)
        at org.apache.hadoop.mapred.JobClient.access$500(JobClient.java:170)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:880)
        at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:833)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:396)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1177)
        at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:833)
        at org.apache.hadoop.mapreduce.Job.submit(Job.java:476)
        at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:506)

错误原因:

在进行match的时候返回了null,应该返回一个空的FileStatus[],代码位置在FileSystem.java中

0.21.0版本之后此bug已经修复,因此升级即可

 

0
0
分享到:
评论

相关推荐

    hadoop2.7.3+mahout0.9问题集

    7. **日志和调试**:在解决问题的过程中,查看Hadoop和Mahout的日志信息是非常重要的。通过Hadoop的YARN日志和Mahout的自定义日志,可以定位错误发生的具体位置,从而进行修复。 在解决这些问题时,以下步骤可能会...

    Hadoop入门程序java源码

    Mapper通常会对输入数据进行预处理,如过滤、清洗或转换,然后生成中间键值对。Reducer则接收Mapper的输出,对相同的键进行聚合,生成最终的结果。 此外,程序还会包含一个主类,用于设置Job参数并提交到Hadoop集群...

    hadoop中map/reduce

    在大数据处理领域,Hadoop是不可或缺的核心框架,其核心组件MapReduce则是分布式计算的重要实现方式。MapReduce的设计理念源于Google的同名论文,它通过将大规模数据处理任务分解为两个阶段:Map(映射)和Reduce...

    hadoop的JAVA编程包

    - **Mapper**:输入键值对映射为中间键值对,通常处理数据的分词、过滤等操作。 - **Reducer**:接收Mapper输出的中间键值对,进行聚合、汇总等操作,生成最终结果。 - **InputFormat和OutputFormat**:定义数据...

    hadoop mapreduce

    这个过程通常涉及过滤、转换或计算,生成中间键值对。 Reduce阶段: Reduce阶段将Map阶段产生的中间键值对进行聚合。相同的键被分组在一起,然后传递给Reduce函数。这个函数负责整合所有与一个特定键相关的值,通常...

    老师的Hadoop源代码分析报告.pdf

    本节对Hadoop中的输入输出流进行了详细的分析。 ##### 1. FSInputStream抽象类 - FSInputStream是所有输入流的基类,提供了读取文件的基本功能。 - 分析了FSInputStream的主要方法和实现细节。 ##### 2. 输出流 - ...

    hadoop mr file2hfile2hbase

    总之,通过Hadoop MapReduce将文件转换为HFile并导入HBase是一种常见的数据导入方式,尤其适用于大数据量的场景。理解这个过程对于优化HBase的性能和管理大规模数据至关重要。在实际操作中,还需要考虑数据的分片...

    Hadoop课程设计-基于Java和mapreduce实现的贝叶斯文本分类器设计

    这个项目旨在让学生理解大数据处理的基本原理,以及如何利用Hadoop生态系统来解决实际问题,特别是文本分类任务。 首先,我们需要了解Hadoop。Hadoop是Apache软件基金会开发的一个开源框架,用于存储和处理大规模...

    Java操作Hadoop Mapreduce基本实践源码

    在大数据处理领域,Hadoop MapReduce是一个至关重要的组件,它为海量数据的并行处理提供了分布式计算框架。本文将深入探讨如何使用...通过深入学习和实践,开发者可以利用Hadoop MapReduce解决大数据处理中的各种问题。

    基于Hadoop的好友推荐系统.zip

    2. **配置文件**:如`hadoop.xml`,用于设置Hadoop集群的相关参数,如输入和输出路径、JobTracker和TaskTracker的配置等。 3. **数据输入**:可能包含模拟的用户行为日志或社交网络数据,用于训练推荐模型。 4. **...

    spark-2.3.1-bin-hadoop2.7.rar

    3. **配置Spark**:修改`conf\spark-env.sh`(或者在Windows上是`conf\spark-env.cmd`),根据你的环境配置JVM参数、Hadoop相关路径等。 4. **验证安装**:打开命令行,输入`pyspark`或`spark-shell`启动交互式...

    hadoop&spark使用教程.docx

    ### Hadoop & Spark 使用教程详解 #### Hadoop 使用教程 **一、安装与配置** 1. **下载与安装Hadoop** - 访问官方网站获取最新版本的Hadoop压缩包。...在实践中不断探索新功能,提高解决问题的能力。

    hadoop编写MR和运行测试共12页.pdf.zip

    Map函数接收输入数据块,执行一些预处理操作,如过滤、转换等,然后生成中间键值对。Reduce函数则将所有相同的中间键及其对应的值集合作为一个输入,执行聚合操作,如求和、计数等,产生最终结果。 运行测试通常...

    PPT-我如何自学hadoop让薪水翻倍.pptx

    最后,结合实际案例,进行项目实践,以巩固理论知识并提升解决实际问题的能力。 通过深入学习和实践,掌握Hadoop技术,不仅可以提升个人技能,也可能带来职业生涯的飞跃,如提高薪资和职位晋升。对于希望进入大数据...

    9.Hadoop入门进阶课程_第9周_Mahout介绍、安装与应用案例.pdf

    ### Hadoop入门进阶课程之Mahout介绍、安装与应用案例 #### Mahout概述 Mahout作为Apache Software Foundation(ASF)旗下的一个开源项目,致力于提供一系列可扩展的机器学习算法实现,以帮助开发者更轻松地构建...

    大数据分析与应用Hadoop-Hive.pptx

    【大数据分析与应用Hadoop-Hive】的讲解涵盖了Hadoop生态系统、MapReduce的工作原理、Hive的应用架构以及实际的手厅数据过滤操作。以下是对这些知识点的详细阐述: ### 一、Hadoop生态 Hadoop是一个开源的大数据...

    Hadoop streaming详细介绍

    在 Ruby 示例中,`max_temperature_map.rb` 脚本从输入数据中提取年份和温度,并过滤掉无效记录,生成格式化的键值对。 **Reduce 阶段** 在 Reduce 阶段,用户提供的可执行程序同样通过 stdin 读取数据,这次是按键...

    大数据技术分享 Hadoop运行原理分析 共3页.pdf

    4. **定义main函数**:在main函数中,开发者需要创建一个Job对象,并设置相关的配置参数,如指定Mapper和Reducer类、设置输入输出路径等,最后提交作业并等待其完成。 #### 四、Hadoop程序运行流程详解 1. **main...

    hbase-0.98.17-hadoop2-bin.tar.gz

    HBase是Apache软件基金会的一个开源NoSQL数据库,它构建在Hadoop文件系统(HDFS)之上,设计用于处理大规模分布式数据。HBase提供了一个高可靠、高性能、可伸缩的列式存储模型,适合处理非结构化和半结构化数据。`...

Global site tag (gtag.js) - Google Analytics