需求:
数据格式如下:
/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已经修复,因此升级即可
相关推荐
Hadoop的学习路径
Hadoop使用常见问题以及解决方法,简单实用
安装hadoop的时候或者使用的时候,会出现hadoop常见问题及解决方法
hadoop安装时,会遇到不同问题,这里只是列举我自己遇到的问题
Hadoop大数据平台安全问题和解决方案的综述
资源中具体对Hadoop HA平台搭建过程中出现的问题给出了相应的解决办法,图文结合,适合新手学习来用,如果遇到其他,欢迎交流学习
Hadoop大数据平台安全问题和解决方案的综述,可以从这里学习到处理问题的思路。
hadoop使用distcp问题解决 然后用distcp从1.0.3的集群拷数据到2.0.1的集群中。 遇到问题处理
Hadoop MapReduce作业卡死问题的解决方法.docx
Hadoop使用常见问题以及解决方法.doc Hadoop使用常见问题以及解决方法.doc
以开源项目Hadoop为实验平台,论证传统协同过滤算法无法适应云平台;从相似度和预测偏好两方面,借鉴共词分析法,将传统协同过滤算法改进为适应Hadoop平台的分布式协同过滤算法;实现顺序组合式MapRe-duce协同过滤任务,并...
5、/etc/profile的java和Hadoop配置路径 6.hadoop namenode format 7./hadoop/etc/slaves这个文件里必须把所有的slaves的主机名写进去。 8.mast的/etc/hosts slave1的/etc/hosts slave2 的/etc/hosts (localhost:...
在windows环境下开发hadoop时,需要配置HADOOP_HOME环境变量,变量值D:\hadoop-common-2.7.3-bin-master,并在Path...解决方案:下载本资源解压将hadoop.dll和winutils.exe文件复制到hadoop2.7.3的bin目录下即可解决。
windows下hadoop2.7.3环境问题的解决,亲测win10、win7皆可使用
在网上搜集的以及本人自己总结的hadoop集群常见问题及解决办法,融合了网上常常搜到的一些文档以及个人自己的经验。
HADOOP第一代文件系统的问题和解决方案,和同软件提出自已的解决方案
在Python代码中使用os模块配置:os.environ[‘HADOOP_HOME’] = ‘HADOOP解压文件夹路径’ winutils.exe,并放入Hadoop解压文件夹的bin目录内 hadoop.dll,并放入:C:/Windows/System32 文件夹内 如果配置出现问题,...
文档主要用于对hadoop搭建及使用过程出现的问题的解决
全程跟着安装配置的一般不会出现问题,jdk版本尽量选择和Hadoop版本相容的,Hadoop版本可以选择较低版本,2.7版本较为稳定,Linux系统版本没有多大要求,一般将Hadoop和jdk版本选择好就行,这个作业较为简单,在安装...