为啥结构化流式处理因“java.lang.IncompatibleClassChangeError:Implementing class”而失败?

Posted

技术标签:

【中文标题】为啥结构化流式处理因“java.lang.IncompatibleClassChangeError:Implementing class”而失败?【英文标题】:Why does Structured Streaming fail with "java.lang.IncompatibleClassChangeError: Implementing class"?为什么结构化流式处理因“java.lang.IncompatibleClassChangeError:Implementing class”而失败? 【发布时间】:2017-08-22 18:04:21 【问题描述】:

我想通过 PySpark 使用结构化流式处理运行 Spark 应用程序。

我使用 Spark 2.2 和 Kafka 0.10 版本。

我因以下错误而失败:

java.lang.IncompatibleClassChangeError:实现类

spark-submit 命令使用如下:

/bin/spark-submit \
  --packages org.apache.spark:spark-streaming-kafka-0-10_2.11:2.2.0 \
  --master local[*] \
  /home/umar/structured_streaming.py localhost:2181 fortesting

structured_streaming.py代码:

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("StructuredStreaming").config("spark.driver.memory", "2g").config("spark.executor.memory", "2g").getOrCreate()
raw_DF = spark.readStream.format("kafka").option("kafka.bootstrap.servers", "localhost:2181").option("subscribe", "fortesting").load()
values = raw_DF.selectExpr("CAST(value AS STRING)").as[String]
values.writeStream.trigger(ProcessingTime("5 seconds")).outputMode("append").format("console").start().awaitTermination()

【问题讨论】:

【参考方案1】:

您需要spark-sql-kafka 才能进行结构化流式传输:

--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.2.0

另外,请确保您使用的 Scala(以上 2.11)和 Spark (2.2.0) 版本与您在集群上使用的版本相同。

【讨论】:

确保版本与您的 Spark 集群相同是非常关键的。非常感谢您的建议!【参考方案2】:

请参考This

您正在使用当前不支持 python 的 spark-streaming-kafka-0-10。

【讨论】:

以上是关于为啥结构化流式处理因“java.lang.IncompatibleClassChangeError:Implementing class”而失败?的主要内容,如果未能解决你的问题,请参考以下文章

卡夫卡结构化流 java.lang.NoClassDefFoundError

结构化流式处理:由于检查点数据而重新启动时出现流式处理异常

为啥 RDD 不适合流式任务?

Kafka 结构化流式处理 KafkaSourceProvider 无法实例化

PySpark 结构化流式处理:将查询的输出传递到 API 端点

结构化流式多水印