4
나는 다음과 같은 코드를 사용하여 분산 캐시에 파일을 추가하고에 제대로 넣지 :파일은 분산 캐시
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를 완전히 사용하고 있습니다.
좋은! 고맙습니다! 이제 완벽하게 작동합니다. – user1717071