Apache spark Pyspark结构化流式Kafka配置错误
我曾经成功地将pyspark用于Spark流媒体(Spark 2.0.2)和Kafka(0.10.1.0)结合使用,但我的目的更适合结构化流媒体。我尝试在线使用该示例: 使用以下类似代码:Apache spark Pyspark结构化流式Kafka配置错误,apache-spark,pyspark,apache-kafka,apache-spark-sql,spark-structured-streaming,Apache Spark,Pyspark,Apache Kafka,Apache Spark Sql,Spark Structured Streaming,我曾经成功地将pyspark用于Spark流媒体(Spark 2.0.2)和Kafka(0.10.1.0)结合使用,但我的目的更适合结构化流媒体。我尝试在线使用该示例: 使用以下类似代码: ds1 = spark .readStream .format("kafka") .option("kafka.bootstrap.servers", "host1:port1,host2:port2") .option("subscribe", "topic1") .load() que
ds1 = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "host1:port1,host2:port2")
.option("subscribe", "topic1")
.load()
query = ds1
.writeStream
.outputMode('append')
.format('console')
.start()
query.awaitTermination()
但是,我总是会出现以下错误:
: org.apache.kafka.common.config.ConfigException:
Missing required configuration "partition.assignment.strategy" which has no default value
在创建ds1时,我还尝试将此添加到我的选项集中:
.option("partition.assignment.strategy", "range")
但是,即使显式地给它赋值也不能阻止错误,我在网上或卡夫卡文档中可以找到的任何其他值(如“roundrobin”)也不能阻止错误
我还使用“assign”选项尝试了这一点,并获得了相同的错误(我们的Kafka主机设置为assign——每个使用者只分配了一个分区,并且我们没有任何重新平衡)
知道这是怎么回事吗?文档没有什么帮助(可能是因为它仍处于实验阶段)。另外,是否有使用KafkaUtils的结构化流媒体?还是这是唯一的入口
Kafka.
前缀,例如选项(“Kafka.partition.assignment.strategy”,“range”)
。但是,您不需要设置kafka.partition.assignment.strategy
,因为它有一个默认值。我的直觉是,您可能将Kafka 0.8.*和0.10.*JAR都放在类路径上,并加载了错误的类Kafka.
前缀,例如选项(“Kafka.partition.assignment.strategy”,“range”)
。但是,您不需要设置kafka.partition.assignment.strategy
,因为它有一个默认值。我的直觉是,您可能将Kafka 0.8.*和0.10.*JAR都放在类路径上,并加载了错误的类将
kafka客户机-*.jar
添加到spark-jar文件夹中,然后重新启动spark master和worker。然后,您不需要将.option(“partition.assignment.strategy”、“range”)
添加kafka客户机-*.jar
到您的spark jar文件夹,然后重新启动spark master和worker。那么您就不需要添加选项(“partition.assignment.strategy”、“range”)
在Spark 2.3.2中使用结构化流媒体时,我遇到了这个问题。就像@bruce.liu在他的回答中暗示的那样,当Spark的JVM在其类路径中没有kafka客户机…jar文件时,就会发生这种情况
我通过下载kafka客户端jar()修复了它,然后使用--jars
和--driver-class-path
选项将它提供给spark submit
大概是这样的:
spark-submit --class MainClass --master local[*] --jars local:///root/sources/jars/kafka-clients-0.10.0.1.jar --driver-class-path local:///root/sources/jars/kafka-clients-0.10.0.1.jar app.jar
我在Spark 2.3.2中使用结构化流时遇到了这个问题。就像@bruce.liu在他的回答中暗示的那样,当Spark的JVM在其类路径中没有kafka客户机…jar文件时,就会发生这种情况 我通过下载kafka客户端jar()修复了它,然后使用
--jars
和--driver-class-path
选项将它提供给spark submit
大概是这样的:
spark-submit --class MainClass --master local[*] --jars local:///root/sources/jars/kafka-clients-0.10.0.1.jar --driver-class-path local:///root/sources/jars/kafka-clients-0.10.0.1.jar app.jar