Databricks:writeStream 不处理数据

Posted

技术标签:

【中文标题】Databricks:writeStream 不处理数据【英文标题】:Databricks: writeStream not processing data 【发布时间】:2021-07-24 09:41:54 【问题描述】:

我正在进行 Databricks 培训,很难让 writeStream 查询正常工作。也许我没有正确理解流式传输的整个概念。我有一个包含 20 个 JSON 文件的路径,我可以通过以下方式读取这些文件:

ordersJsonPath = "dbfs:/user/dbacademy/developer-foundations-capstone/raw/orders/stream/*"
ordersDF = (spark.readStream
.option("maxFilesPerTrigger", 1)
.schema(userDefinedSchema)
.json(ordersJsonPath)

运行“display(ordersDF)”时,我可以看到 20 个 JSON 以正确的模式顺序添加到数据帧中。但是,当我想将文件写入具有相同架构的表中时,不会处理任何内容。我的 streamWrite 代码是:

checkpointPath = "dbfs:/user/dbacademy/developer-foundations-capstone/checkpoint/orders"
orders = (ordersDF.writeStream
.format("delta")
.queryName("ordersQuery")
.outputMode("append")
.trigger(processingTime="1 second")
.option("checkpointLocation", checkpointPath)
.table("orders"))

writeStream 查询运行但未显示任何结果(并且表未更新)。由于我没有收到任何错误消息,所以很难说出什么是错的,但似乎读取和写入查询之间没有真正的联系。我需要同时或按顺序运行这两个查询吗?还是我在这里混淆了事情,我需要 2 个不同的数据帧来读写?

非常感谢!

【问题讨论】:

【参考方案1】:

解决方案是删除 checkPointPath 并再次运行。

【讨论】:

以上是关于Databricks:writeStream 不处理数据的主要内容,如果未能解决你的问题,请参考以下文章

Spark结构化流多个WriteStream到同一个接收器

如何在单个 Spark 作业中调用多个 writeStream 操作?

我可以将 writeStream.bytesWritten 与管道一起使用吗?

writestream 完成时如何返回承诺? [复制]

javascript 支持WriteStream的RxJS转换流

WriteStream 无法在 Delta 表中写入数据