web-dev-qa-db-ja.com

spark-submitの--packagesを使用して複数の依存関係を指定するにはどうすればよいですか?

sparkストリーミングジョブを開始するためのコマンドラインとして次のコマンドを使用しています。

    spark-submit --class com.biz.test \
            --packages \
                org.Apache.spark:spark-streaming-kafka_2.10:1.3.0 \
                org.Apache.hbase:hbase-common:1.0.0 \
                org.Apache.hbase:hbase-client:1.0.0 \
                org.Apache.hbase:hbase-server:1.0.0 \
                org.json4s:json4s-jackson:3.2.11 \
            ./test-spark_2.10-1.0.8.jar \
            >spark_log 2>&1 &

ジョブは次のエラーで開始できません:

Exception in thread "main" Java.lang.IllegalArgumentException: Given path is malformed: org.Apache.hbase:hbase-common:1.0.0
    at org.Apache.spark.util.Utils$.resolveURI(Utils.scala:1665)
    at org.Apache.spark.deploy.SparkSubmitArguments.parse$1(SparkSubmitArguments.scala:432)
    at org.Apache.spark.deploy.SparkSubmitArguments.parseOpts(SparkSubmitArguments.scala:288)
    at org.Apache.spark.deploy.SparkSubmitArguments.<init>(SparkSubmitArguments.scala:87)
    at org.Apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:105)
    at org.Apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

書式を削除して1行に戻してみましたが、問題は解決しませんでした。さまざまなバリエーションも試してみました:異なるバージョン、artifactIdの末尾に_2.10を追加など。

ドキュメント(spark-submit --help)によると:

座標の形式は、groupId:artifactId:versionである必要があります。

だから私が持っているものは有効でなければならず、 このパッケージ を参照する必要があります。

問題がなければ、Cloudera 5.4.4を実行しています。

何が悪いのですか? hbaseパッケージを正しく参照するにはどうすればよいですか?

23
davidpricedev

パッケージのリストは、空白なしのコンマを使用して区切る必要があります(改行は問題なく機能します)。

--packages  org.Apache.spark:spark-streaming-kafka_2.10:1.3.0,\
  org.Apache.hbase:hbase-common:1.0.0
43
zero323