如何处理 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...
这在批处理模式下工作正常。
但是,假设 person
的 company
字段随时间变化,或者假设人们完全从 Dataset
中删除,我如何才能使用结构化流式处理,所以 count
仍然正确?
AFAIK 结构化流式处理假设数据源是仅附加的:这是否意味着我需要将删除和更新作为单独的数据源进行跟踪,并自己合并它们?
【问题讨论】:
您要读取哪种数据源? 【参考方案1】:一般来说,model of structured streaming 是您正在从一个不断增长的仅附加表中读取数据。您是对的,这意味着为了回答您的问题,您必须将更改值建模为删除(可能在 numEmployees
等字段中使用负值),然后进行插入。
【讨论】:
以上是关于如何处理 Spark Structured Streaming 中已删除(或更新)的行?的主要内容,如果未能解决你的问题,请参考以下文章
Apache spark如何计算分区以及在executor中如何处理分区