Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Pyspark结构化流式Kafka配置错误_Apache Spark_Pyspark_Apache Kafka_Apache Spark Sql_Spark Structured Streaming - Fatal编程技术网

Apache spark Pyspark结构化流式Kafka配置错误

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

我曾经成功地将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()
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 0.10.1.*客户端中存在一个已知问题,您不应将其与Spark一起使用,因为它可能会因以下原因生成错误答案。您可以使用0.10.0.1客户端,它应该与0.10.1.*Kafka群集配合使用

  • 要在结构化流媒体中向Kafka消费者客户端发送Kafka配置,您需要添加
    Kafka.
    前缀,例如
    选项(“Kafka.partition.assignment.strategy”,“range”)
    。但是,您不需要设置
    kafka.partition.assignment.strategy
    ,因为它有一个默认值。我的直觉是,您可能将Kafka 0.8.*和0.10.*JAR都放在类路径上,并加载了错误的类

  • 您希望使用KafkaUtils中的哪个API,但结构化流媒体中缺少该API?Spark 2.2.0刚刚推出,您可以在结构化流媒体中使用带有Kafka的批处理或流媒体查询。阅读示例

  • Kafka 0.10.1.*客户端中存在一个已知问题,您不应将其与Spark一起使用,因为它可能会因以下原因生成错误答案。您可以使用0.10.0.1客户端,它应该与0.10.1.*Kafka群集配合使用

  • 要在结构化流媒体中向Kafka消费者客户端发送Kafka配置,您需要添加
    Kafka.
    前缀,例如
    选项(“Kafka.partition.assignment.strategy”,“range”)
    。但是,您不需要设置
    kafka.partition.assignment.strategy
    ,因为它有一个默认值。我的直觉是,您可能将Kafka 0.8.*和0.10.*JAR都放在类路径上,并加载了错误的类

  • 您希望使用KafkaUtils中的哪个API,但结构化流媒体中缺少该API?Spark 2.2.0刚刚推出,您可以在结构化流媒体中使用带有Kafka的批处理或流媒体查询。阅读示例


  • 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