需求:
数据格式如下:
/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已经修复,因此升级即可
相关推荐
7. **日志和调试**:在解决问题的过程中,查看Hadoop和Mahout的日志信息是非常重要的。通过Hadoop的YARN日志和Mahout的自定义日志,可以定位错误发生的具体位置,从而进行修复。 在解决这些问题时,以下步骤可能会...
Mapper通常会对输入数据进行预处理,如过滤、清洗或转换,然后生成中间键值对。Reducer则接收Mapper的输出,对相同的键进行聚合,生成最终的结果。 此外,程序还会包含一个主类,用于设置Job参数并提交到Hadoop集群...
在大数据处理领域,Hadoop是不可或缺的核心框架,其核心组件MapReduce则是分布式计算的重要实现方式。MapReduce的设计理念源于Google的同名论文,它通过将大规模数据处理任务分解为两个阶段:Map(映射)和Reduce...
- **Mapper**:输入键值对映射为中间键值对,通常处理数据的分词、过滤等操作。 - **Reducer**:接收Mapper输出的中间键值对,进行聚合、汇总等操作,生成最终结果。 - **InputFormat和OutputFormat**:定义数据...
这个过程通常涉及过滤、转换或计算,生成中间键值对。 Reduce阶段: Reduce阶段将Map阶段产生的中间键值对进行聚合。相同的键被分组在一起,然后传递给Reduce函数。这个函数负责整合所有与一个特定键相关的值,通常...
本节对Hadoop中的输入输出流进行了详细的分析。 ##### 1. FSInputStream抽象类 - FSInputStream是所有输入流的基类,提供了读取文件的基本功能。 - 分析了FSInputStream的主要方法和实现细节。 ##### 2. 输出流 - ...
总之,通过Hadoop MapReduce将文件转换为HFile并导入HBase是一种常见的数据导入方式,尤其适用于大数据量的场景。理解这个过程对于优化HBase的性能和管理大规模数据至关重要。在实际操作中,还需要考虑数据的分片...
这个项目旨在让学生理解大数据处理的基本原理,以及如何利用Hadoop生态系统来解决实际问题,特别是文本分类任务。 首先,我们需要了解Hadoop。Hadoop是Apache软件基金会开发的一个开源框架,用于存储和处理大规模...
在大数据处理领域,Hadoop MapReduce是一个至关重要的组件,它为海量数据的并行处理提供了分布式计算框架。本文将深入探讨如何使用...通过深入学习和实践,开发者可以利用Hadoop MapReduce解决大数据处理中的各种问题。
2. **配置文件**:如`hadoop.xml`,用于设置Hadoop集群的相关参数,如输入和输出路径、JobTracker和TaskTracker的配置等。 3. **数据输入**:可能包含模拟的用户行为日志或社交网络数据,用于训练推荐模型。 4. **...
3. **配置Spark**:修改`conf\spark-env.sh`(或者在Windows上是`conf\spark-env.cmd`),根据你的环境配置JVM参数、Hadoop相关路径等。 4. **验证安装**:打开命令行,输入`pyspark`或`spark-shell`启动交互式...
### Hadoop & Spark 使用教程详解 #### Hadoop 使用教程 **一、安装与配置** 1. **下载与安装Hadoop** - 访问官方网站获取最新版本的Hadoop压缩包。...在实践中不断探索新功能,提高解决问题的能力。
Map函数接收输入数据块,执行一些预处理操作,如过滤、转换等,然后生成中间键值对。Reduce函数则将所有相同的中间键及其对应的值集合作为一个输入,执行聚合操作,如求和、计数等,产生最终结果。 运行测试通常...
最后,结合实际案例,进行项目实践,以巩固理论知识并提升解决实际问题的能力。 通过深入学习和实践,掌握Hadoop技术,不仅可以提升个人技能,也可能带来职业生涯的飞跃,如提高薪资和职位晋升。对于希望进入大数据...
### Hadoop入门进阶课程之Mahout介绍、安装与应用案例 #### Mahout概述 Mahout作为Apache Software Foundation(ASF)旗下的一个开源项目,致力于提供一系列可扩展的机器学习算法实现,以帮助开发者更轻松地构建...
【大数据分析与应用Hadoop-Hive】的讲解涵盖了Hadoop生态系统、MapReduce的工作原理、Hive的应用架构以及实际的手厅数据过滤操作。以下是对这些知识点的详细阐述: ### 一、Hadoop生态 Hadoop是一个开源的大数据...
在 Ruby 示例中,`max_temperature_map.rb` 脚本从输入数据中提取年份和温度,并过滤掉无效记录,生成格式化的键值对。 **Reduce 阶段** 在 Reduce 阶段,用户提供的可执行程序同样通过 stdin 读取数据,这次是按键...
4. **定义main函数**:在main函数中,开发者需要创建一个Job对象,并设置相关的配置参数,如指定Mapper和Reducer类、设置输入输出路径等,最后提交作业并等待其完成。 #### 四、Hadoop程序运行流程详解 1. **main...
HBase是Apache软件基金会的一个开源NoSQL数据库,它构建在Hadoop文件系统(HDFS)之上,设计用于处理大规模分布式数据。HBase提供了一个高可靠、高性能、可伸缩的列式存储模型,适合处理非结构化和半结构化数据。`...