Python 如何将kafka主题中的json字符串读入pyspark数据帧?

Python 如何将kafka主题中的json字符串读入pyspark数据帧?,python,apache-spark,pyspark,apache-kafka,Python,Apache Spark,Pyspark,Apache Kafka,我试图将Kafka主题中的json消息读入PySpark数据框架。我的第一个想法是: consumer=KafkaConsumer(主题名称, 消费者超时\u ms=9000, 引导服务器=引导服务器, 自动偏移重置为最早, 启用自动提交=真, 组id=str(uuid4()), 值\反序列化器=λx:x.decode(“utf-8”)) 消息_lst=[] 消费者信息: message\u str=message.value.replace(“\\”,“”).replace(“\n”,”).r

我试图将Kafka主题中的json消息读入PySpark数据框架。我的第一个想法是:

consumer=KafkaConsumer(主题名称,
消费者超时\u ms=9000,
引导服务器=引导服务器,
自动偏移重置为最早,
启用自动提交=真,
组id=str(uuid4()),
值\反序列化器=λx:x.decode(“utf-8”))
消息_lst=[]
消费者信息:
message\u str=message.value.replace(“\\”,“”).replace(“\n”,”).replace(“\r”,”)
message_dict=json.load(message_str)
消息头追加(消息头)
messages_json=sc.parallelize(message_lst)
messages\u df=sqlContext.read.json(messages\u json)
我想知道是否有一种方法可以使用Spark结构化流或类似的方式获得相同的数据帧。有人能帮忙吗? UPD:我对结构化流媒体的尝试是:

df=spark\
.readStream\
.格式(“卡夫卡”)\
.option(“kafka.bootstrap.servers”,f“{bootstrap\u SERVER}”)\
.选项(“订阅”,主题名称)\
.load()
它退出时出现以下错误:
pyspark.sql.utils.AnalysisException:未能找到数据源:Kafka。请按照“结构化流媒体+Kafka集成指南”的部署部分部署应用程序。
UPD:我阅读了指南,在异常文本中有说明,它建议安装这个库“spark-sql-kafka-0-10_2.12”,但我找不到。有人知道吗? UPD 2:我设法添加了所需的程序包,并尝试读取来自卡夫卡的消息:

df=spark\
..读流\
..格式(“卡夫卡”)\
..选项(“kafka.bootstrap.servers”,f“{bootstrap_SERVER}”)\
..选项(“订阅”,主题名称)\
…加载()
df.writeStream.outputMode(“追加”).format(“控制台”).start().awaitTermination()

我使用了与以前相同的使用者。这里的问题是,它只读取在start()调用之后写入的消息。我如何读取在给定时间写入的所有消息并将结果作为数据帧获取?还有,有人能给出load_json()的模式示例吗?如果我的问题很愚蠢,我很抱歉,但是我找不到Python中的任何示例。

您缺少中提到的kafka包

/bin/spark submit--packagesorg.apache.spark:spark-sql-kafka-0-10_2.12:3.1.2。。。

确保此处列出的3.1.2与您自己的Spark版本相匹配

这应该会有所帮助:。它展示了如何使用Spark Structured Streaming读取Kafka流。在示例中,值被读取为字符串,但您可以使用内置函数从_json轻松地将其解释为json。因此,您知道结构化流,但它是不清楚你做了什么tried@OneCricketeer更新了问题;请再检查一遍。你找不到是什么意思?这是一个Maven包,不是Python。非常感谢你的回答,它帮助我解决了问题,但我遇到了新问题。我更新了问题;请再检查一遍