首页 > 解决方案 > Spark Structured Streaming中从中间读取现有多级分区文件数据的问题

问题描述

我正在使用现有的多级分区镶木地板文件作为源来处理结构化火花流。我在使用它时遇到以下问题。

启动 spark 流作业以从特定分区读取数据,而不是从头开始。

假设如果我们观察到分区 year=2018/month=10/hour=10 存在数据质量问题。现在假设我已经通过替换正确的文件更正了这些数据。

现在的问题是如何从今天开始而不是从头开始重新处理数据?因为在结构化流中可以说我使用文件流作为源,它将加载我想忽略的几个文件的所有文件。在这里,我还需要删除我的检查点目录,因为它到目前为止还存在偏移。

标签: apache-sparkspark-structured-streaming

解决方案


假设如果我们观察到分区 year=2018/month=10/hour=10 存在数据质量问题。那么如何重新处理从今天开始的数据,而不是从头开始呢?

我认为在 Spark Structured Streaming 中这是不可能的(希望我弄错了)。

由于我们谈论的是流式查询,因此您必须倒带“流”。实现它的唯一方法(我能想到)是重新上传数据(不知道如何做)或简单地处理会“删除”分区的先前版本的数据,year=2018/month=10/hour=10然后上传新的更正版本。

问题是如何通知 parquet 数据源应该从结果中“驱逐”已经处理的任何内容(可能已经发送到外部源进行进一步处理)。


推荐阅读