我有一个Kudu数据库,里面有一个表。每天,我都会启动一个批处理作业,接收要接收的新数据(ETL管道(。
如果:,我想插入新数据
- 密钥不存在
- 如果键存在,则仅当新行的时间戳列是最近的列时才更新该行
我认为您需要的是新数据与现有表的左外部联接,其结果必须首先保存到临时表中,然后使用SaveMode.Append
将其移动到原始表中。
您可能还对使用Spark Structured Streaming或Kafka而不是批处理作业感兴趣。我甚至在GitHub上找到了一个例子(但没有检查它的工作效果,以及它是否考虑了现有数据(。