首页 > 解决方案 > 对于 Delta Lake 上的 FACT 表,是否与按业务日期和摄取日期进行分区有关?

问题描述

我正在处理一个数据工程案例,其中我有一个Table_Movieingest date. 现在,我不时收到一些旧数据。我需要基于business date.

例如: 今天,我收到了与日期 12/05/2020 对应的新数据:

  1. 我需要删除12/05/2020Table_Movie对应的数据business date
  2. 删除旧数据后,我需要插入对应于12/05/2020的新数据。

ingest date and business date分区会提高性能吗?:

==> eg. Table_Movie/ingestdate=20220812/business_date=20200512/

ingest date注意:出于其他原因,我们需要保留分区。

如果您有任何建议或指导,请告诉我

标签: apache-sparkpartitioningazure-databricksdelta-lakehadoop-partitioning

解决方案


如果您只是偶尔收到旧数据,那么按业务日期分区可能会得到非常小的文件,这会影响性能。Databricks 上的 Delta 使用多种优化技术来避免读取不必要的数据。其中一项技术是数据跳过- 当写入数据时,Delta 将记录索引列的最小值和最大值,因此当在索引列上读取条件时,驱动程序将根据该索引检查值,并跳过没有数据的文件. 默认情况下,前 N 列启用数据跳过(默认为 32,可配置),因此您需要确保业务日期列位于列列表的开头。


推荐阅读