2

私はspark-shellを使ってsparkを試しています。私のデータはすべてSQLにあります。

  I used to include external jars using the --jars flag like /bin/spark-shell --jars /path/to/mysql-connector-java-5.1.23-bin.jar --master spark://sparkmaster.com:7077

  I have included it in class path by changing  the bin/compute-classpath.sh file 
  I was running succesfully with this config. 

今、jobserver を介してスタンドアロン ジョブを実行しています。次のエラー メッセージが表示されます

result: {
    "message" : "com.mysql.jdbc.Driver"
    "errorClass" : "java.lang.classNotFoundException"
    "stack" :[.......]
}

以下のように、jar ファイルを local.conf ファイルに含めました。context-settings{ .....dependent-jar-uris = ["file:///absolute/path/to/the/jarfile"] ...... }

4

3 に答える 3

2

すべての依存関係は、spark-jobserverアプリケーション JAR に含めるか (「uber-jar」を作成するなど)、Spark エグゼキューターのクラスパスに含める必要があります。アプリケーションが実行されるたびにサードパーティ ライブラリの依存関係を各ワーカーにコピーする必要がないため、クラスパスを構成することをお勧めします。

Spark 1.3.1 でワーカー (エグゼキューター) クラスパスを構成する手順は次のとおりです。

  1. サードパーティの JAR を各 Spark ワーカーと Spark マスターにコピーします。
  2. JAR を各ホストの同じディレクトリに配置します (例: /home/ec2-user/lib)
  3. /root/spark/conf/spark-defaults.confSpark マスターの Spark ファイルに次の行を追加します。

    spark.executor.extraClassPath /root/ephemeral-hdfs/conf:/home/ec2-user/lib/name-of-your-jar-file.jar

    以下は、スタンフォード NLP ライブラリを使用するための私自身の変更の例です。

    spark.executor.extraClassPath /root/ephemeral-hdfs/conf:/home/ec2-user/lib/stanford-corenlp-3.4.1.jar:/home/ec2-user/lib/stanford-corenlp-3.4.1-models.jar

于 2015-08-09T18:15:02.727 に答える
0

curl --data-binary @/PATH/jobs_jar_2.10-1.0.jar 192.168.0.115:8090/jars/job_to_be_registered

依存関係のjarを投稿するため

curl -d "" 'http://192.168.0.115:8090/contexts/new_context?dependent-jar-uris=file:///path/dependent.jar'

これは、jobserver 1.6.1 で機能します。

于 2016-10-19T12:57:06.200 に答える
0

/path/to/mysql-connector-java-5.1.23-bin.jarあなたはあなたの労働者を持っていないかもしれません。
必要な依存関係をすべての Spark ワーカーにコピーするか、 Bundle the submitting jar with required dependencies.
jar の作成には maven を使用します。依存関係のスコープは実行時でなければなりません。

于 2015-04-22T07:53:54.470 に答える