Apache spark 尝试使用spark结构化流媒体来消费kafka流

Apache spark 尝试使用spark结构化流媒体来消费kafka流,apache-spark,pyspark,apache-kafka,spark-structured-streaming,spark-streaming-kafka,Apache Spark,Pyspark,Apache Kafka,Spark Structured Streaming,Spark Streaming Kafka,我是卡夫卡的新手。我使用python设置了一个twitter侦听器,它在localhost:9092 kafka服务器上运行。我可以使用kafka客户端工具(conduktor)和命令“bin/kafka-console-consumer.sh——bootstrap server localhost:9092——主题twitter——从头开始”来使用侦听器生成的流 但是,当我尝试使用Spark结构化流使用相同的流时,它没有捕获并抛出错误-找不到数据源:kafka。请按照“结构化流媒体+卡夫卡集成

我是卡夫卡的新手。我使用python设置了一个twitter侦听器,它在localhost:9092 kafka服务器上运行。我可以使用kafka客户端工具(conduktor)和命令“bin/kafka-console-consumer.sh——bootstrap server localhost:9092——主题twitter——从头开始”来使用侦听器生成的流 但是,当我尝试使用Spark结构化流使用相同的流时,它没有捕获并抛出错误-找不到数据源:kafka。请按照“结构化流媒体+卡夫卡集成指南”的部署部分部署应用程序。; 找到下面的截图

  • 我的生产者或监听器代码:

    auth = tweepy.OAuthHandler("**********", "*************")
    auth.set_access_token("*************", "***********************")
    # session.set('request_token', auth.request_token)
    api = tweepy.API(auth)
    class KafkaPushListener(StreamListener):          
        def __init__(self):
            #localhost:9092 = Default Zookeeper Producer Host and Port Adresses
            self.client = pykafka.KafkaClient("0.0.0.0:9092")
    
        #Get Producer that has topic name is Twitter
            self.producer = self.client.topics[bytes("twitter", "ascii")].get_producer()
    
        def on_data(self, data):
            #Producer produces data for consumer
            #Data comes from Twitter
            self.producer.produce(bytes(data, "ascii"))
            return True
    
        def on_error(self, status):
            print(status)
            return True
    twitter_stream = Stream(auth, KafkaPushListener())
    twitter_stream.filter(track=['#fashion'])
    
    Spark结构化流媒体的消费者访问

    df = spark \
      .readStream \
      .format("kafka") \
      .option("kafka.bootstrap.servers", "localhost:9092") \
      .option("subscribe", "twitter") \
      .load()
    df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")
    

    添加
    sink
    它将从卡夫卡启动consum数据

    检查下面的代码

    df = spark \
      .readStream \
      .format("kafka") \
      .option("kafka.bootstrap.servers", "localhost:9092") \
      .option("subscribe", "twitter") \
      .load()
    
    query = df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)") \
        .writeStream \
        .outputMode("append") \
        .format("console") \ # here I am using console format .. you may change as per your requirement.
        .start()
    
    query.awaitTermination()
    

    当我提交spark作业时,我发现缺少什么,我必须包含正确的依赖项包版本。 我有spark 3.0.0
    因此,我加入了-org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.0包

    你能发布完整的代码吗我从屏幕截图上看不到任何水槽。。您使用的是哪个接收器??已用代码更新