python实现数据仓库ETL(python 数据仓库)

网友投稿 796 2022-09-05


python实现数据仓库ETL(python 数据仓库)

通常讲的数据仓库ETL, 可以分为ETL和ELT两种实现方式.  ELT是在加载到仓库后, 再做数据转换.  ETL 是在加载之前完成转换, 落地的数据就是转换后的样子了.

ELT多使用在MPP架构的数据仓库平台上, 比如Teradata, greenplum, 主要考虑点是, MPP数据仓库数据处理能力强, 在加载后再做转换, 可以充分利用这一优势.  另外, Extract和Load过程很简单, 且数据仓库厂商提供unloading/loading的命令行工具一般具有并行处理能力, 所以直接用这些命令行工具满足. 至于转换部分过程, 多为通过sql查询出stage区新加的记录, 然后做一些运算, 最后再拼sql将计算后的数据放在另一个区.

如果数据仓库是建在Oracle/SQL Server这类架构数据库上, 多采用ETL方式, 将转换放在数据仓库外运行, 以减轻数据仓库的压力. ETL过程也多选购商业软件, 比如Datastage, SSIS.

在ELT方案中, python也可大有作为. 即使是使用数据仓库厂商提供的命令行工具做Extracting和Loading, python仍可以作为胶水. 拼sql, python的三引号字符串以及字符串操作都超强, 很适合.

在ETL方案中, 使用python完成流程控制自然是很轻松的, 所以关键点是,  提供一个高效的基于记录行的pipeline执行机制,  以及如何提供较高的执行效率.  下面有几个开源项目还不错, 值得在项目中一试.  其实甚至不用什么额外的开源项目, 用标准库也很容易做transform的, 因为python内建支持sqlite, 接下来无需多讲了.

基于pipeline的开源项目:

(推荐度*****) petl, ​​项目活跃度较高; 文档很不错; 支持多种数据源; 支持iterator(具有lazy加载机制); 很容易学习.

(推荐度****) pygrametl,  ​​,

特点是: 文档全, 有用户实例. 我看了写代码, 代码质量很高; 作者实现了基于维度建模思想的几个转换组件, 支持cpython/jpython, 很容易学习.

(推荐度***) pyf,  具有web 页面, 功能很眩. 大量使用python generator机制, 其本身也是基于flow based programming. 学习难度较大.

ETL往往也要关注执行效率, 关于python并行处理, 单机上, CPython当然要选择multiprocessing方式, 一来可充分利用多核, 同时编程难度也不大.  要是将多个任务分配在几个机器执行, 我认为选用久经考验的gearman最合适, 不仅能提供负载均衡, 而且可以改善可用性.


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:跨计算机执行的几个方法
下一篇:sublime配置(sublime配置java环境)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~