目录扩展在独立部署模式下不起作用:Apache Spark

时间:2018-05-29 05:35:45

标签: apache-spark apache-kafka spark-streaming

我正在尝试使用以下命令在独立的火花群集上部署使用Kafka主题作业的火花流:

./bin/spark-submit --class MaxwellCdc.MaxwellSreaming
~/cdc/cdc_2.11-0.1.jar --jars ~/cdc/kafka_2.11-0.10.0.1.jar,
~/cdc/kafka-clients-0.10.0.1.jar,~/cdc/mysql-connector-java-5.1.12.jar,
~/cdc/spark-streaming-kafka-0-10_2.11-2.2.1.jar 

并获得此例外:

Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/kafka/common/serialization/StringDeserializer
at MaxwellCdc.MaxwellSreaming$.main(MaxwellSreaming.scala:30)
at MaxwellCdc.MaxwellSreaming.main(MaxwellSreaming.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:775)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.lang.ClassNotFoundException:
org.apache.kafka.common.serialization.StringDeserializer
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

从文档中引用:

  

使用spark-submit时,应用程序jar和任何jar   包含在--jars选项中将自动转移到   集群。 -jars之后提供的URL必须用逗号分隔。   该列表包含在驱动程序和执行程序类路径中。   目录扩展不适用于--jars。

什么是目录扩展?

扩展文件名意味着将相对文件名转换为绝对文件名。由于这是相对于默认目录完成的,因此必须指定默认目录名称以及要扩展的文件名。 还涉及扩展缩写,如〜/

因此,请尝试为所有提供--jars选项的jar提供绝对路径。我希望这会有所帮助。