很多朋友对于我们可以不再使用ETL了吗和不建议使用ETL不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
本文目录
ETL工具的典型代表主要有什么
Extraction-Transformation-Loading的缩写,中文名称为数据提取、转换和加载。ETL工具有:OWB(OracleWarehouseBuilder)、ODI(OracleDataIntegrator)、InformaticPowerCenter、Trinity、AICloudETL、DataStage、RepositoryExplorer、Beeload、Kettle、DataSpider
目前,ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS、Beeload、Kettle……
开源的工具有eclipse的etl插件。cloveretl.
数据集成:快速实现ETL
ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多,由系统集成和历史数据造成的原因主要包括:业务系统不同时期系统之间数据模型不一致;业务系统不同时期业务过程有变化;旧系统模块在运营、人事、财务、办公系统等相关信息的不一致;遗留系统和新业务、管理系统数据集成不完备带来的不一致性。
实现ETL,首先要实现ETL转换的过程。它可以集中地体现为以下几个方面:
1、空值处理:可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。
2、规范化数据格式:可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。
3、拆分数据:依据业务需求对字段可进行分解。例,主叫号861082585313-8148,可进行区域码和电话号码分解。
4、验证数据正确性:可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。
5、数据替换:对于因业务因素,可实现无效数据、缺失数据的替换。
6、Lookup:查获丢失数据Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。
7、建立ETL过程的主外键约束:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。
有没有扩展性较好的ETL产品
介绍一下我了解的ETL的常用工具:DataX、Datastage、Informatica、Kettle、DataPipeline。
阿里开源软件:DataX
DataX是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。
Kettle开源软件:水壶(中文名)
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,扩展性好,数据抽取高效稳定。主从结构,没有高可用。不支持数据的实时同步,也不支持断点续传。
IBM公司商业软件:Datastage
最专业的商业ETL工具,价格较贵,但是大数据量下处理速度也能保持较快的处理速度和稳定性。实时监控做的也很好,可以看到数据抽取的情况,运行到哪一步,很直观。售后技术支持强大。
商业软件:Informatica
专业的ETL工具,价格上比Datastage便宜一点,需要服务器和客户端的安装,处理速度上和Datastage相当。分布式部署,支持实时,但是效率不高。技术支持主要在美国,所以国内用的较少。
国内:DataPipeline
国内收费工具,相比DataX,DataPipeline有可视化的过程监控,提供多样化的图标,辅助运维,故障问题实时预警。而DataX需要依赖工具日志定位故障问题。支持实时性,DataX则是定时的。支持断点续传,DataX则不支持。架构上也是分布式的,支持水平扩展。
其中拓展性比较好的就是水壶啦
我们可以不再使用ETL了吗
说到ETL,很多开发伙伴可能会有些陌生,我也是在近几年的工作过程中才接触到ETL的,现在的项目是比较依赖于ETL,可以说是项目中重要的一部分。
先看一看ETL是做什么用的:ETL是将各个业务系统的数据,通过抽取、清洗、转换之后,加载到数据仓库的过程;ETL可以将分散、零乱、标准不统一的数据整合到一起。完整的ETL功能有很多(ETL是三个三次的缩写...),我只从我实际使用的场景出发,说明我对ETL的理解和实际应用。
我接触过的项目,使用ETL工具的场景有这个几种:
报表、BI系统:在公司建设的初期,业务比较少,系统也比较少,一台数据库就搞定了;
随着公司业务的增加,业务系统被拆成很多系统;
随着数据量的继续增加,单个系统的数据增加到一定程度的时候,也做了分库分表;
这时候领导、业务人员在用数据做分析的时候,数据来源可能是多个系统的多张表,这时候企图通过一个复杂的SQL跑出来结果就很困难了;通常公司会建立一个数据仓库,通过ETL工具把数据抽取到数据仓库中,再做数据的拟合和展示。
跨系统的数据加工或查询:我们现在所在公司,业务系统有几百个,由于业务流程比较复杂,前端系统在做业务操作的时候,在正式提交交易之前,有很多业务校验;比如要查询客户在A系统的交易历史,在B系统的交易历史,在C系统的交易历史;那么就需要分别调用A、B、C系统的接口,这个对前端系统很不友好,那么通常的解决方案是什么?
学阿里,建中台,、把A/B/C系统合并成一个大中台,对外提供服务;这种方法很好,但是非常难;很多公司,别说把A/B/C合成一个系统了,就是A系统本身的重构,都非常地困难;
第二种方案,在前段系统和A/B/C系统之间,增加一层,可以叫做服务中台,它的作用是整合A/B/C系统的服务,然后对外提供一个服务给前端系统调用;好处是前端系统只需要调用服务中台的一个接口即可;
我们现在采用的是第三个方案,把A/B/C系统的数据,通过ETL抽取到一起,并通过Java把数据提前加工好,保存到MongoDB中的同一个Collection中(利用了MongoDB数据结构的特点);再对外提供服务的时候,相当于做了一次单表查询,就可以查询到三个系统的数据;好处是可以调一个接口查出三个系统的数据,并且缓解了三个系统的查询压力;
当然这个方案也有着一个很大的缺陷,就是有一定的延迟,需要根据业务场景进行评估,是否接受这个延迟。
ETL的工具也有不少,我们现在使用的是Informatica,这是收费的,开源的只接触过Kettle;
我们现在是根据数据表的时间戳,做增量抽取,在我看来,比较理想的方案是业务系统可以把数据“吐出来”,比如业务系统埋点发送MQ、MySQL可以监听binlog日志,不过在我们公司都非常难以实现;
所以,至少在我们项目,ETL是很难被替换掉的。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。做etl用不用理解业务
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。不理解业务怎么能行呢?
OK,关于我们可以不再使用ETL了吗和不建议使用ETL的内容到此结束了,希望对大家有所帮助。