我正在尝试构建一个ETL,它将源表映射到一个维度的星型模式模型。
我们的数据仓库基本上是库都数据库上的Impala。
我的问题是,我是否应该:
构建一个直接使用Python (链接)处理kudu表的ETL。
或
B-或在黑斑羚中创建UDF(等效于SQL中的存储过程),执行插入/联接等操作,将源表映射到星型模式模型,并使用Nifi或任何调度程序(如气流等)对其进行调度。
在我看来,我认为最好是处理本地数据库,而不是在其之上处理SQL引擎。但这只是一个假设。
发布于 2021-04-17 04:46:18
为什么不接近C,:)两者兼而有之。
两者都有利与弊。
此外,请考虑一下,您/团队对python/SQL和未来的可维护性感到满意。
目前,我们正在我的cloudera项目中使用方法B。我们创建视图,然后使用insert直接加载最终表。我们几乎不需要任何UDF。
现在,我的建议,请使用方法B和方法A只在你真的不能创造复杂的逻辑。
编辑:让我们说,我们必须加载订单表。因此,我们执行以下块来加载订单和依赖的org、cust、prod表。
Load customer |
load org | --> Load Orders final.
load product |
load order stage|Load customer块是脚本的集合,如-
insert overwrite cust_stg select * from cust_stg_vw; -- This loads into stage table
insert overwrite cust select * from cust_vw; -- This loads into cust table类似地,还编写了其他块。将它们放置在块中可以使我们灵活地将它们按任何顺序/任何我们想要提高性能的位置放置。
https://stackoverflow.com/questions/67133038
复制相似问题