为啥结构化流式处理因“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
Kafka 结构化流式处理 KafkaSourceProvider 无法实例化