首页 > 解决方案 > Spark SQL:如果存在则更新,否则忽略

问题描述

有没有办法快速执行处理 Spark SQL 并存储到 Kudu 的“如果存在则更新,否则忽略”?

背景是:物联网平台,接收到的大量数据和平台资源有限。我正在使用 Spark Streaming 将数据插入/更新到 Kudu 存储中。

连接的设备发送 2 种消息:

由于资源限制,我的意图是使用单表模型:

但生活并不完美,有时“第一”的信息会丢失,无法坚持。在这种情况下,我想“忽略”设备,这就是我不能使用 upsert 的原因。

我放弃了存储部分消息的可能性,然后删除所有设备数据为空的消息,因为扫描和删除正在消耗我有限的资源。

我发现的唯一方法是执行连接以查找现有的 PK 并更新其相应的注册表,这也消耗了大量资源。

所以问题是,如果存在更新,则插入可用,如果存在更新,如何忽略它可以实现以优化方式“updateIfExists”spark DF?

谢谢

标签: scalaapache-sparkapache-spark-sqlkuduapache-kudu

解决方案


推荐阅读