Apache spark 从Kafka读取数据,并使用Python中的Spark结构化重新命名打印到控制台

Apache spark 从Kafka读取数据,并使用Python中的Spark结构化重新命名打印到控制台,apache-spark,pyspark,apache-kafka,apache-spark-sql,spark-structured-streaming,Apache Spark,Pyspark,Apache Kafka,Apache Spark Sql,Spark Structured Streaming,我在Ubuntu 20.04中有卡夫卡2.13-2.7.0。我运行kafka服务器和zookeeper,然后创建一个主题,并通过nc-lk9999发送一个文本文件。这个话题充满了数据。另外,我的系统上有spark-3.0.1-bin-hadoop2.7。事实上,我想使用kafka主题作为使用python的Spark结构化流媒体的源。我的代码如下: spark=SparkSession\ 建筑商先生\ .appName(“APP”)\ .getOrCreate() df=火花\ .readStre

我在Ubuntu 20.04中有卡夫卡2.13-2.7.0。我运行kafka服务器和zookeeper,然后创建一个主题,并通过
nc-lk9999
发送一个文本文件。这个话题充满了数据。另外,我的系统上有spark-3.0.1-bin-hadoop2.7。事实上,我想使用kafka主题作为使用python的Spark结构化流媒体的源。我的代码如下:

spark=SparkSession\
建筑商先生\
.appName(“APP”)\
.getOrCreate()
df=火花\
.readStream\
.格式(“卡夫卡”)\
.option(“kafka.bootstrap.servers”,“localhost:9092”)\
.期权(“认购”、“sparktest”)\
.选项(“起始偏移量”、“最早”)\
.load()
df.selectExpr(“转换(键为字符串)”,“转换(值为字符串)”)
df.printSchema()
我使用以下命令通过spark submit运行上述代码:

./spark-submit --packages org.apache.spark:spark-streaming-kafka-0-10_2.12:3.0.1,org.apache.spark:spark-sql-kafka-0-10_2.12:3.0.1 /home/spark/PycharmProjects/testSparkStream/KafkaToSpark.py 
代码运行时没有任何异常,我在Spark site中收到此输出:

   root
    |-- key: binary (nullable = true)
    |-- value: binary (nullable = true)
    |-- topic: string (nullable = true)
    |-- partition: integer (nullable = true)
    |-- offset: long (nullable = true)
    |-- timestamp: timestamp (nullable = true)
    |-- timestampType: integer (nullable = true)

我的问题是卡夫卡的主题充满了数据;但是,在输出中运行代码不会产生任何数据。您能告诉我这里出了什么问题吗?

原样的代码不会打印出任何数据,只会向您提供一次模式

您可以按照常规和中给出的说明查看如何将数据打印到控制台。请记住,在Spark中读取数据是一个延迟操作,没有操作(通常是
writeStream
操作)就无法完成任何操作

如果您按照以下方式补充代码,您应该会看到所选数据(键和值)打印到控制台:

spark=SparkSession\
建筑商先生\
.appName(“APP”)\
.getOrCreate()
df=火花\
.readStream\
.格式(“卡夫卡”)\
.option(“kafka.bootstrap.servers”,“localhost:9092”)\
.期权(“认购”、“sparktest”)\
.选项(“起始偏移量”、“最早”)\
.load()
query=df.selectExpr(“转换(键为字符串)”,“转换(值为字符串)”)\
.writeStream\
.格式(“控制台”)\
.选项(“检查点位置”、“路径/到/HDFS/dir”)\
.start()
查询