Hadoop의 입력 경로 필터링 문제 해결 방법
2682 단어 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 이후 버그가 수정되었으므로 업그레이드하면 됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Azure HDInsight + Microsoft R Server에서 연산 처리 분산Microsoft Azure HDInsight는 Microsoft가 제공하는 Hadoop의 PaaS 서비스로 인프라 주변의 구축 노하우를 몰라도 훌륭한 Hadoop 클러스터를 구축할 수 있는 훌륭한 서비스입니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.