Apache Spark Delta lake medallion层体系结构、青铜层增量ETL最佳做法

oymdgrw7  于 2023-03-19  发布在  Apache
关注(0)|答案(1)|浏览(105)

在圆形层架构中(青铜级、银级和黄金级),执行增量ETL时(例如,从源中提取最近X天的事务)最好是按提取日期还是事务日期来划分青铜层?我理解青铜层应该是增量格式的原始数据,但是,从着陆区源合并到该层中是否是最佳实践?还是按提取日期分区并始终追加。
在我所看到的例子中,源总是只生成最新的记录,但是在我的例子中,我们使用的是滑动窗口ETL,所以在不同的日期之间会有重复-这是因为我们有记录进入源“晚”,因此我们需要确保它们被考虑在内。因此,这不是一个简单的情况,只是能够附加到青铜,而没有重叠。
我认为以下是最佳做法之一:
1.将源数据库中的所有记录放置到一个放置区(非delta,Parquet格式),在放置区中按提取日期进行分区。合并到青铜delta表中,按事务日期进行分区。
1.使用提取日期作为分区列附加到青铜增量表,因此青铜增量层将变得非常大(由于每天之间的重复记录)。
1.直接从按交易日期划分的源合并到青铜层(即跳过着陆区)--我唯一担心的是合并设置不正确,我们丢失历史记录的可能性(可能风险很低?)
值得注意的是,这些数据是大数据,每天可能有数百万条记录。

ukqbszuj

ukqbszuj1#

我们有相同的架构,我们决定采用您的第一个解决方案。这意味着,使用一个原始层,以保持所有的历史数据作为原始文件(按接收日期划分),然后将数据合并到青铜区。
问候你,阿明。

相关问题