[HADOOP] 파일이 분산 캐시에 올바르게 삽입되지 않음
HADOOP파일이 분산 캐시에 올바르게 삽입되지 않음
다음 코드를 사용하여 분산 캐시에 파일을 추가하고 있습니다.
Configuration conf2 = new Configuration();
job = new Job(conf2);
job.setJobName("Join with Cache");
DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000"), conf2);
그런 다음 파일을 매퍼로 읽어들입니다.
protected void setup(Context context)throws IOException,InterruptedException{
Configuration conf = context.getConfiguration();
URI[] cacheFile = DistributedCache.getCacheFiles(conf);
FSDataInputStream in = FileSystem.get(conf).open(new Path(cacheFile[0].getPath()));
BufferedReader joinReader = new BufferedReader(new InputStreamReader(in));
String line;
try {
while ((line = joinReader.readLine()) != null) {
s = line.toString().split("\t");
do stuff to s
} finally {
joinReader.close();
}
문제는 내가 한 줄만 읽었고 캐시에 넣은 파일이 아니라는 것입니다. 오히려 cm9vdA == 또는 base64의 루트입니다.
다른 사람이이 문제가 있거나 분산 캐시를 잘못 사용하는 방법을 확인하십시오. 나는 완전히 배포 된 Hadoop 0.20.2를 사용하고 있습니다.
해결법
-
==============================
1.작업 구성의 일반적인 실수 :
작업 구성의 일반적인 실수 :
Configuration conf2 = new Configuration(); job = new Job(conf2); job.setJobName("Join with Cache"); DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000"), conf2);
Job 객체를 생성 한 후에는 Job이 Job 객체의 복사본을 생성 할 때 Configuration 객체를 되돌려 야하고, 작업을 생성 한 후에는 conf2에 값을 설정해도 작업 자체에는 아무런 영향을 미치지 않습니다. 이 시도:
job = new Job(new Configuration()); Configuration conf2 = job.getConfiguration(); job.setJobName("Join with Cache"); DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000"), conf2);
또한 분산 캐시에있는 파일 수를 확인해야합니다. 아마도 하나 이상의 파일이 존재하며보고있는 값을 제공하는 임의의 파일을 여는 것입니다.
필자는 symlinking을 사용하여 로컬 작업 디렉토리에서 알려진 이름으로 파일을 사용할 수있게 할 것을 제안합니다.
DistributedCache.createSymlink(conf2); DistributedCache.addCacheFile(new URI("hdfs://server:port/FilePath/part-r-00000#myfile"), conf2); // then in your mapper setup: BufferedReader joinReader = new BufferedReader(new FileInputStream("myfile"));
from https://stackoverflow.com/questions/12708947/files-not-put-correctly-into-distributed-cache by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop fs -put 명령 (0) | 2019.07.09 |
---|---|
[HADOOP] start-all.sh를 사용하여 hadoop 프로세스를 시작하면 문제가 발생합니다 [닫힘] (0) | 2019.07.09 |
[HADOOP] IOException : oozie 작업 흐름을 실행할 때 파일 시스템이 예외를 종료했습니다. (0) | 2019.07.09 |
[HADOOP] 전체 스키마 정보가없는 Hadoop SequenceFile은 어떻게 검사 할 수 있습니까? (0) | 2019.07.09 |
[HADOOP] Dockerized Hadoop 데이터 노드가 잘못된 IP 주소로 등록하는 이유는 무엇입니까? (0) | 2019.07.09 |