将昨天的数据与今天的数据进行比较

时间:2018-08-02 08:41:47

标签: sql apache-spark parquet databricks

我有2张镶木地板,今天一张,昨天一张。我想做的就是比较今天表格中发生的变化,例如:

  • 已添加哪些新行
  • 哪些行已删除以及何时删除
  • 哪些行已更改

表本身具有“ createdAt”和“ updatedAt”列,我可以将其用于此目的。

我正在使用Databricks / Apache Spark,因此我可以使用它们的内置函数或SQL查询。我不确定该怎么做,任何一般想法都会受到赞赏!

2 个答案:

答案 0 :(得分:0)

在主表后面维护一个审核表。在主表上执行插入,更新或删除操作时,必须将数据插入审核表。审核表应包括主表的createdAt和当前日期戳。
如果您管理事务类型为1,2,3的插入,更新或删除,那么这将对查询性能有帮助。

答案 1 :(得分:0)

由于我不知道您的表的LoadType(完整或增量),因此我将尝试介绍两种情况:-

满载 - 为此,您只需要今天的表,因为它也将包含所有以前的记录。 因此,您只需要使用 updatedAt 列(即列号)来检查昨天加载后修改的所有记录,即 updateAt>昨天的加载日期

增量负载 - 对于delta,每天您只会获得修改的记录(新的,更新的或删除的),因此只查询今天的表而没有任何条件将达到目的。

现在,在火花方面,由于您有大量记录,因此可以在运行时使用以下类似方法来操纵多个数据帧分区:-

spark.sql("set spark.sql.shuffle.partitions = 1500");

请在此处找到其他优化技术 https://deepsense.ai/optimize-spark-with-distribute-by-and-cluster-by/