2015-11-25 131 views
12

我有以下命令行来启动火花流作业。如何使用--packages为spark-submit指定多个依赖关系?

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) 

我试图消除格式化并返回到单行线,但这并不解决问题。我也尝试了一堆的变化:不同的版本,添加_2.10到的artifactId结束等

按照文档(spark-submit --help):

The format for the coordinates should be groupId:artifactId:version.

所以我有什么应该是有效的并应参考this package

如果有帮助,我正在运行Cloudera 5.4.4。

我在做什么错?我如何正确引用hbase包?

+0

是它做工精细分离?在我的情况下,我不得不通过--jars和--driver-class-path来添加jar。 –

回答

26

包的列表应该使用逗号没有空格(打破行应该只是罚款),例如

--packages org.apache.spark:spark-streaming-kafka_2.10:1.3.0,\ 
    org.apache.hbase:hbase-common:1.0.0 
+3

我发现我也不得不删除空格和换行符才能使它成功运行:'--packages org.apache.spark:spark-streaming-kafka_2.10:1.3.0,org.apache.hbase: HBase的,常见的有:1.0.0' ... – davidpricedev