【发布时间】:2019-06-14 04:05:51
【问题描述】:
我使用 spark-sql-kafka-0-10 使用 Spark 2.4 和 scala 2.11.12 从 kafka 读取批处理。所以我的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 插件来制作我的应用程序的胖罐。在本地 spark 上部署这个 jar 文件时效果很好,如下所示 $FAT_JAR 指向我的程序集文件:
./spark-submit --class $MAIN_CLASS --master local --driver-class-path $FAT_JAR $FAT_JAR
但是当我在集群上部署它时(即使worker和master都在同一台机器上)它会抛出关于TopicPartiton的反序列化问题的异常。
我如何在集群上运行:
./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和master有kafka-client的保存版本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 无法反序列化 TopicPartition,我该如何解决?
【问题讨论】:
-
你是在驱动节点还是其他节点上得到这个?他们都使用相同的JVM(版本)吗?
标签: apache-spark apache-spark-sql