【发布时间】:2020-05-24 03:10:16
【问题描述】:
问题
这是一个好主意吗,在使用 ETL 方法时,将一些最后阶段的聚合作为 ELT(DW 内的物化视图)?
详情
目前我们有一个 ETL 流程(数据湖 => 数据仓库):Nifi -> Storage [raw] -> Spark -> Storage [dl] -> Spark -> Storage [dw] -> Data Warehouse -> Power BI/Bus Users。
Data Warehouse = Power BI/业务用户的小投影,根本没有转换逻辑。 Storage [dl] 层用于进一步的 ETL 处理、DS 和 ML,将来也可能用于数据探索。 Storage [dw] 数据仅用于一个目的 - 加载到我们的数据仓库中。
现在假设有从Storage [dw] 层派生的聚合,这些聚合仅在数据仓库内部需要。 将聚合从 Spark 移动到数据仓库物化视图是个好主意吗?
注意事项
数据仓库物化视图似乎是这些聚合更自然的方法。它们更容易实现,无需添加 DW 上传逻辑和编排步骤。但是我们应该做出决定并采用单一方法。所以我害怕以下几点:
- [Major] 我想重用一些逻辑并用单元测试覆盖所有逻辑。同时我不想添加 SQL 单元测试框架。
- [中] 不太可能,但每小时聚合计算可能会与 Power BI 竞争资源。所有繁重的工作仍将由 Spark 完成。
- [次要] 聚合步骤不再是编排的一部分。我不能在视图执行失败时使管道失败。次要的,因为对于 SQL 和结构化数据,我认为这种情况非常少见。
附言
由于数据量巨大,Power BI 直接查询数据仓库性能是关键衡量指标之一。将大聚合表拆分为多个较小的聚合表是优化事物的方法之一。因此,将多个聚合的创建委托给 Power BI 开发人员将是一个不错的选择,可以节省一些开发时间(而不是每次都为 Spark 团队创建票证)。
【问题讨论】:
标签: apache-spark database-design architecture etl data-warehouse