Apache spark 如何使用--packages for spark submit指定多个依赖项?

Apache spark 如何使用--packages for spark submit指定多个依赖项?,apache-spark,hbase,spark-streaming,Apache Spark,Hbase,Spark Streaming,我有以下命令行来启动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-clien

我有以下命令行来启动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)
线程“main”java.lang.IllegalArgumentException中的异常:给定路径格式不正确:org.apache.hbase:hbase common:1.0.0 位于org.apache.spark.util.Utils$.resolveURI(Utils.scala:1665) 位于org.apache.spark.deploy.SparkSubmitArguments.parse$1(SparkSubmitArguments.scala:432) 位于org.apache.spark.deploy.SparkSubmitArguments.parseOpts(SparkSubmitArguments.scala:288) 位于org.apache.spark.deploy.SparkSubmitArguments。(SparkSubmitArguments.scala:87) 位于org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:105) 位于org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 我尝试删除格式并返回到一行,但这并不能解决问题。我还尝试了一系列变体:不同的版本,在artifactId的末尾添加了
\u2.10
,等等

根据文档(
spark submit--help
):

坐标的格式应为groupId:artifactId:version

所以我所拥有的应该是有效的,应该是参考的

如果有帮助,我将运行Cloudera 5.4.4


我做错了什么?如何正确引用hbase软件包?

例如,软件包列表应使用逗号分隔,而不使用空格(断行可以很好地工作)

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

我发现在mysql和postgres的spark版本3.0.0中使用SparkSession是值得的

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('mysql-postgres').config('spark.jars.packages', 'mysql:mysql-connector-java:8.0.20,org.postgresql:postgresql:42.2.16').getOrCreate()

我发现我还必须删除空格和换行符才能让它成功运行:
——packages org.apache.spark:spark-streaming-kafka_2.10:1.3.0,org.apache.hbase:hbase common:1.0.0
…它工作正常吗?在我的例子中,我还必须通过--jars和--driver类路径添加jar。