暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

浅谈数据处理中的ETL工具

数科魔方 2022-08-11
1253

点击上方蓝字关注我们



数据是现代企业的重要资源,企业高效运营、精细管理、科学决策的基础。如何运用技术手段将数据转换为信息、知识,是当今企业提高核心竞争力的关键,数据处理的时效性、准确性直接影响数据的分析与挖掘,在大数据的生态中始终处于不可缺少的地位。

为实现企业全局数据的系统化运作管理,为DSS(决策支持系统)、BI(商业智能)、经营分析系统等深度开发应用奠定基础,挖掘数据价值,数据仓库、数据中台就应运而生。将原本相互分离的业务系统的数据源进行整合,建立统一的数据采集、处理、存储、分发、共享中心,从而使公司成员能够从不同业务视角查看综合数据,这个过程中用到的数据处理方法之一就是ETL。


什么是ETL


先放上一段百度百科的解释:

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。


数据仓库结构(引用知乎)

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关系到BI项目的成败。


ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换,在抽取的过程中需要挑选不同的抽取方法,尽可能地提高ETL的运行效率。ETL三个部分中,花费时间最长的是“T”(Transform,清洗、转换),一般情况下这部分工作量是整个ETL的2/3。数据的加载一般在数据清洗完了之后直接写入DW(Data Warehousing,数据仓库)中去。


ETL工具


在数据处理时,我们有时会遇到下面这些问题:

  • 当数据来自不同的物理主机,这时如果使用SQL语句去处理,就显得比较吃力且开销也大。


  • 数据来源可以是各种不同的数据库或者文件,这时候需要先把他们整理成统一的格式后才可以进行数据的处理,这一过程用代码实现显然有些麻烦。


  • 在数据库中我们可以使用存储过程去处理数据,但是处理海量数据的时候存储过程显然比较吃力,而且会占用较多数据库的资源,这可能会导致数据资源不足,进而影响数据库的性能。

上面所说的问题,我们用ETL工具就可以解决。

它的优点有:

  • 支持多种异构数据源的连接。


  • 图形化的界面操作十分方便。


  • 处理海量数据速度快、流程更清晰等。

ETL工具介绍及对比


ETL常用工具有三种——Informatica、Kettle和Datastage,在工作中有幸接触到了前两种工具,下面就这两个工具做些简要介绍及特点的对比。


1. Informatica

商业软件,相当专业的ETL工具,适合大规模的ETL应用。官方描述道:借助Informatica全面、统一、开放且经济的数据管理平台,组织可以在改进数据质量的同时,访问、发现、清洗、集成并交付数据,以提高运营效率并降低运营成本。

使用难度:★★☆

2. Kettle

免费,最著名的开源产品。纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle中文名称叫水壶,该项目的主程序员MATT希望把各种数据放到一个壶里,然后以一种指定的格式流出。

使用难度:★★

ETL工具特点对比:

  • 操作

Informatica有四个开发管理组件,开发的时候我们需要打开其中三个进行开发,Informatica没有Ctrl + z的功能,如果对job作了改变之后,想要撤销,返回到改变前是不可能的;相比Kettle在开发时则较为简便,步骤可撤销,仅在测试调试的时候不太方便。


  • 部署

Kettle只需要JVM环境,而Informatica需要服务器和客户端安装。


  • 数据处理的速度

大数据量下Informatica的处理速度较快且稳定,Kettle的处理速度相比之下稍慢。


  • 服务

Informatica有很好的商业化的技术支持,而Kettle则没有;遇到问题只能依靠度娘或论坛求助。商业软件的售后服务上会比免费的开源软件好很多。


  • 扩展

Kettle的扩展性毋庸置疑,因为是开源代码,可以自己开发拓展它的功能,而Informatica由于是商业软件,基本上没有。


  • 网上的技术文档

Informatica < Kettle,相对来说,Informatica在遇到问题去网上找到解决方法的概率比较低,Kettle则比较多。


项目经验分享


在项目中,很多时候我们都需要同步生产库的表到数据仓库中。一百多张表同步、重复地操作,对开发人员来说是细心和耐心的考验。在这种情况下,最便捷的工具无疑是Kettle,多个表的同步都可以用同一个程序运行,不必每一张表的同步都建一个程序,而Informatica虽然有提供工具去批量设计,但还是需要生成多个程序进行一一配置。


在做增量表的时候,每次运行后都需要把将最新的一条数据操作时间存到数据库中,下次运行我们就取大于这个时间的数据。Kettle有控件可以直接读取数据库中的这个时间置为变量;对于没有类似功能控件的Informatica,我们的做法是先读取的数据库中的这个时间存到文件,然后主程序运行的时候指定这个文件为参数文件,也可以得到同样的效果。




俗话说的好:世上没有最好的,只有适合的!


每一款ETL工具都有它的优缺点,我们需要根据实际项目,权衡利弊选择适合的ETL工具,合适的就是最好的。当下越来越多公司及其客户更重视最新的数据(实时数据)展现,传统的ETL工具可能满足不了这样的需求,而实时流数据处理和云计算技术更符合。所以我们也需要与时俱进,学习大数据时代下的ETL工具。




扫描二维码获取

更多精彩

光证数科




点个在看你最好看


文章转载自数科魔方,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论