복붙노트

[HADOOP] 분산 캐시 hadoop을 통해 jar 추가

HADOOP

분산 캐시 hadoop을 통해 jar 추가

분산 캐시를 사용하여 클래스 경로에 .jar 파일을 추가하고 있습니다.

DistributedCache.addFileToClassPath(new Path("binary/tools.jar"), job.getConfiguration());

addFileToClassPath ()가 .jar 파일을 클래스 경로에 추가하는 데 사용되는 올바른 API인지 확실하지 않습니다. 매퍼에서 클래스 경로를 검색하려고 할 때 추가 된 jar을 볼 수 없었습니다. 클래스 경로에는 작업의 작업 디렉토리 (jobcache dir)가 포함되지만 분산 캐시를 통해 분배 된 jar은 포함되지 않습니다.

Properties prop = System.getProperties();
System.out.println("The classpath is: " + prop.getProperty("java.class.path", null));

addArchiveToClassPath ()도 시도했습니다. 작동하지 않았습니다.

뭔가 빠졌습니까?

감사,

해결법

  1. ==============================

    1.문제는 길에 있었다. addFileToClassPath () 또는 addArchiveToClassPath ()는 절대 경로 만 입력으로 사용합니다. binary / tools.jar은 상대적이므로 작동하지 않았습니다. 경로를 /user//binary/tools.jar로 지정해야합니다. 이제는 제대로 작동합니다. hdfs : // : port / user / ..조차도 실패합니다.

    문제는 길에 있었다. addFileToClassPath () 또는 addArchiveToClassPath ()는 절대 경로 만 입력으로 사용합니다. binary / tools.jar은 상대적이므로 작동하지 않았습니다. 경로를 /user//binary/tools.jar로 지정해야합니다. 이제는 제대로 작동합니다. hdfs : // : port / user / ..조차도 실패합니다.

    다들 감사 해요..

  2. ==============================

    2.jar 파일이 로컬 파일 시스템 또는 HDFS의 클래스 경로에 추가됩니까?

    jar 파일이 로컬 파일 시스템 또는 HDFS의 클래스 경로에 추가됩니까?

    DistributedCache는 사용자가 지정한 경로가 HDFS에있을 것으로 예상합니다

  3. from https://stackoverflow.com/questions/11522242/adding-jar-via-distributed-cache-hadoop by cc-by-sa and MIT license