如何处理 Spark Structured Streaming 中已删除(或更新)的行?

Posted

技术标签:

【中文标题】如何处理 Spark Structured Streaming 中已删除(或更新)的行?【英文标题】:How can I process deleted (or updated) rows in Spark Structured Streaming? 【发布时间】:2016-12-09 07:45:24 【问题描述】:

如果我想知道count 有多少人在"Coca-Cola" 积极工作,我会使用以下查询:

people.filter(_.company == "Coca-Cola").groupByKey(_.company).count().writeStream...

这在批处理模式下工作正常。

但是,假设 personcompany 字段随时间变化,或者假设人们完全从 Dataset 中删除,我如何才能使用结构化流式处理,所以 count 仍然正确?

AFAIK 结构化流式处理假设数据源是仅附加的:这是否意味着我需要将删除和更新作为单独的数据源进行跟踪,并自己合并它们?

【问题讨论】:

您要读取哪种数据源? 【参考方案1】:

一般来说,model of structured streaming 是您正在从一个不断增长的仅附加表中读取数据。您是对的,这意味着为了回答您的问题,您必须将更改值建模为删除(可能在 numEmployees 等字段中使用负值),然后进行插入。

【讨论】:

以上是关于如何处理 Spark Structured Streaming 中已删除(或更新)的行?的主要内容,如果未能解决你的问题,请参考以下文章

Spark 如何处理比 Spark 存储大得多的数据?

如何处理 Spark 中的多个 csv.gz 文件?

Apache Spark 如何处理不适合内存的数据?

Apache spark如何计算分区以及在executor中如何处理分区

spark结构化流作业如何处理流-静态DataFrame连接?

从 Spark 写入镶木地板时如何处理空值