복붙노트

[HADOOP] 하둡에 타사 항아리를 포함

HADOOP

하둡에 타사 항아리를 포함

나는 하둡에 새로운 오전. 내 MapReducing 프로그램에 GSON API를 추가했습니다. 언제가 점점 프로그램을 실행하고,

Error: java.lang.ClassNotFoundException: com.google.gson.Gson

누구는 타사 라이브러리 하둡에 추가하는 방법에 저를 제안 할 수 있습니까?

해결법

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

    1.HADOOP_CLASSPATH 모두에 종속성을 추가해야합니다 및 다음 예제와 같은 작업을 제출시 -libjars :

    HADOOP_CLASSPATH 모두에 종속성을 추가해야합니다 및 다음 예제와 같은 작업을 제출시 -libjars :

    현재와 ​​lib 디렉토리 디렉토리에서 모든 항아리 종속성을 추가하려면 다음을 사용합니다 :

    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`echo *.jar`:`echo lib/*.jar | sed 's/ /:/g'`
    

    하둡 항아리를 통해 작업을 시작할 때 당신은 또한 -libjars의 사용을 통해 그것을 종속성의 항아리를 통과해야한다는 점을 명심. 내가 사용하려면 :

    hadoop jar <jar> <class> -libjars `echo ./lib/*.jar | sed 's/ /,/g'` [args...]
    

    참고 : SED 명령은 다른 구분 문자를 필요로; HADOOP_CLASSPATH이되어 분리되고 -libjars 분리 될 필요가있다.

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

    2.HADOOP_CLASSPATH에 항아리를 추가

    HADOOP_CLASSPATH에 항아리를 추가

        vi $HADOOP_HOME/etc/hadoop/hadoop-env.sh
    

    마지막 줄에 추가

    export HADOOP_CLASSPATH=/root/hadoop/extrajars/java-json.jar:$HADOOP_CLASSPATH
    

    리눅스 박스 자체가 아니라 HDFS에 대한 경로는 "/root/hadoop/extrajars/java-json.jar"입니다

    하둡을 다시 시작

    명령

    hadoop classpath
    

    클래스 경로에서 항아리를 표시해야

    이제 평소처럼 MR 작업을 실행

    hadoop jar <MR-program jar> <MR Program class> <input dir> <output dir>
    

    그것은 예상대로에서 파일을 사용합니다.

  3. from https://stackoverflow.com/questions/16340158/include-third-party-jars-in-hadoop by cc-by-sa and MIT license