복붙노트

[SCALA] 스파크 쉼표 목록, 어떻게 항아리의 디렉토리를 선언하는 원한다 --jars 인수를 스파크 제출?

SCALA

스파크 쉼표 목록, 어떻게 항아리의 디렉토리를 선언하는 원한다 --jars 인수를 스파크 제출?

이전 1.6.0의로 스파크 문서의 응용 프로그램을 제출하고, 그것은 그것을 분명히 콜론으로 구분 된 클래스 경로 디렉토리가 아닌 확장이 아니다 같이 --jars 인수를 지정하는 방법을 분명하지 않다.

워드 프로세서 응용 프로그램 및 모든 종속성을 포함한 번들 항아리에 "경로를 말할 URL은 클러스터의 내부에 전 세계적으로 볼 수 있어야합니다, 예를 들어, HDFS :. // 경로 또는 파일 : // 모든 노드에 존재하는 경로. "

오늘 --jars을 테스트 할 때, 우리는 명시 적으로 각 단지에 대한 경로를 제공했기 때문에 물어 :

/usr/local/spark/bin/spark-submit --class jpsgcs.thold.PipeLinkageData ---jars=local:/usr/local/spark/jars/groovy-all-2.3.3.jar,local:/usr/local/spark/jars/guava-14.0.1.jar,local:/usr/local/spark/jars/jopt-simple-4.6.jar,local:/usr/local/spark/jars/jpsgcs-core-1.0.8-2.jar,local:/usr/local/spark/jars/jpsgcs-pipe-1.0.6-7.jar /usr/local/spark/jars/thold-0.0.1-1.jar

/ 파일 : / 또는 HDFS : 공급 한 후 기본 파일입니다 : 우리는 각 작업자 / usr / 지방 / 스파크 / 항아리의 모든 단지와 클러스터를 미리 채우는 선택하고, 어떤 지역의 경우 듯 / 운전자는 운전자가 운영하는 웹 서버에있는 항아리 사용할 수 있습니다. 나는 위와 같이 지역 선택했다.

그리고 우리가 --jars 인수에 주요 단지를 넣을 필요가 없습니다, 내가 만약 최종 인수에서 다른 클래스 (문서 당 응용 프로그램 항아리 인수, 즉 / usr / 지방 / 스파크 / 항아리 / 아직 테스트하지 않은 것 같다 THOLD - 0.0.1-1.jar)는 근로자에게 제공하거나하는 내가 --class가 볼 수의 이름을 따서 명명되지 클래스를 얻기 위해 --jars 경로에 응용 프로그램 단지를 배치해야합니다.

(그리고 --deploy 모드 클라이언트를 사용하여 불꽃 독립형 모드 부여, 당신은 또한 각 작업자 드라이버의 사본을 넣어야하지만 당신은 드라이버를 실행할 노동자 앞까지 모른다)

해결법

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

    1.이러한 방법으로 대신 별도 버전으로 각 단지를 지정하는 .. 쉽게했다 ..

    이러한 방법으로 대신 별도 버전으로 각 단지를 지정하는 .. 쉽게했다 ..

    #!/bin/sh
    # build all other dependent jars in OTHER_JARS
    
    JARS=`find ../lib -name '*.jar'`
    OTHER_JARS=""
       for eachjarinlib in $JARS ; do    
    if [ "$eachjarinlib" != "APPLICATIONJARTOBEADDEDSEPERATELY.JAR" ]; then
           OTHER_JARS=$eachjarinlib,$OTHER_JARS
    fi
    done
    echo ---final list of jars are : $OTHER_JARS
    echo $CLASSPATH
    
    spark-submit --verbose --class <yourclass>
    ... OTHER OPTIONS
    --jars $OTHER_JARS,APPLICATIONJARTOBEADDEDSEPERATELY.JAR
    
  2. ==============================

    2.한 가지 방법 (유일한 방법?)을 --jars 인수를 사용하여 명시 적으로 명명 된 항아리의 쉼표로 구분 된 목록을 제공하는 것입니다. 나는 쉼표를 사용하여 알아 낸 유일한 방법은 명령 줄에 문서를 넘어보고 저를지도 한 StackOverflow의 대답했다 :

    한 가지 방법 (유일한 방법?)을 --jars 인수를 사용하여 명시 적으로 명명 된 항아리의 쉼표로 구분 된 목록을 제공하는 것입니다. 나는 쉼표를 사용하여 알아 낸 유일한 방법은 명령 줄에 문서를 넘어보고 저를지도 한 StackOverflow의 대답했다 :

    spark-submit --help 
    

    이 명령의 출력에는 다음이 포함됩니다

     --jars JARS                 Comma-separated list of local jars to include on the driver
                                  and executor classpaths. 
    

    내가 --jars을 테스트했다 오늘 할 때, 우리는 명시 적으로 각 단지에 대한 경로를 제공했다 :

    /usr/local/spark/bin/spark-submit --class jpsgcs.thold.PipeLinkageData ---jars=local:/usr/local/spark/jars/groovy-all-2.3.3.jar,local:/usr/local/spark/jars/guava-14.0.1.jar,local:/usr/local/spark/jars/jopt-simple-4.6.jar,local:/usr/local/spark/jars/jpsgcs-core-1.0.8-2.jar,local:/usr/local/spark/jars/jpsgcs-pipe-1.0.6-7.jar /usr/local/spark/jars/thold-0.0.1-1.jar
    
  3. from https://stackoverflow.com/questions/34738296/spark-spark-submit-jars-arguments-wants-comma-list-how-to-declare-a-directory by cc-by-sa and MIT license