Apache spark Apache Spark无法反序列化群集上的'TopicPartition'
我使用spark-sql-kafka-0-10从kafka中读取带有sparkApache spark Apache Spark无法反序列化群集上的'TopicPartition',apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我使用spark-sql-kafka-0-10从kafka中读取带有spark2.4和scala2.11.12的批处理。因此,我的build.sbt文件具有以下依赖项 "org.apache.spark" %% "spark-core" % sparkVersion % "provided", "org.apache.spark" %% "spark-sql" % sparkVersion % "provided", "org.apache.spark" %% "spark-sql-kaf
2.4
和scala2.11.12
的批处理。因此,我的build.sbt
文件具有以下依赖项
"org.apache.spark" %% "spark-core" % sparkVersion % "provided",
"org.apache.spark" %% "spark-sql" % sparkVersion % "provided",
"org.apache.spark" %% "spark-sql-kafka-0-10" % sparkVersion
我还使用了sbt-assembly
插件来制作我的应用程序的胖jar。在本地spark上部署此jar文件时效果良好,如下所示,$FAT_jar指向我的程序集文件:
./spark-submit --class $MAIN_CLASS --master local --driver-class-path $FAT_JAR $FAT_JAR
但当我将它部署到集群上时(即使工人和主人都在同一台机器上),它会抛出关于topicpartton
的反序列化问题的异常
如何在群集上运行:
./spark-submit \
--master spark://spark-master:7077 \
--class $MAIN_CLASS \
--driver-class-path $FAT_JAR \
--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0 \
$FAT_JAR
我还尝试了--jars
,我确信worker and master拥有kafka客户端的保存版本,即2.0.0
异常日志:
Caused by: java.io.InvalidClassException: org.apache.kafka.common.TopicPartition; class invalid for deserialization
at java.io.ObjectStreamClass$ExceptionInfo.newInvalidClassException(ObjectStreamClass.java:169)
at java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:874)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2043)
spark无法反序列化主题分区的原因以及如何解决它?我找到了解决方案。
正如我将SPARK\u DIST\u PATH
设置为$(hadoop类路径)
,它包括kafka-client-0.8
,这与SPARK-sql-kafka-0-10
中使用的kafka-client-2.0.0
不同。
我刚刚使用了hadoop的内置版本spark和unsetspark\u DIST\u PATH
来解决这个问题
不管怎样,我希望spark.executor.userClassPathFirst
和spark.driver.userClassPathFirst
能够帮助解决这个问题,但现在它们是实验性的 您是从驱动程序节点还是其他节点获取此信息?它们是否都使用相同的JVM(版本)?