ETL工具-Datax使用
datax工具介绍
datax是阿里开源的离线数据同步平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。开源发布在github上,详细安装步骤见github。
下载编译安装坑点:
a、datax的环境要求:
linux
jdk (1.8)
python2.6
apache  maven 3.x

ETL工具比较(Informatica ,SSIS,Kettle )
个人观点:

1. 如果是自家用,多数情况选哪个工具并不是决定性的。工具能优化工作效率,但不是没有就不能干活的,关键是设计,即使不用这些,靠程序和数据库自己的PROCEDURE 也能搞定这些事情。
2. 如果是作为BI的一部分,总不能让客户自己写代码吧。
土鳖比较:

Informatica  --> 土豪首选;
SSIS --> 装SQL SERVER了吗?如果装了还需要考虑什么?
kettle --> 免费。

Informatica VS SSIS
从易用性来说,Informaitca有四个开发管理组件,初学者可能不知道如 何下手,所以关键先要了解PowerCenter的开发流程。SSIS有BIDS和SSMS,主要的开发工作在BIDS上完成,但是BIDS是基于 Visaul Studio的,如果是没有做过.NET开发的人员,VS的复杂的开发环境可能让他们不知所措,但是对于熟悉VS的开发人员来说,通过VS,他们可以使用 更多的资源,比如源管理器,VSTFS等。从界面的人性化上看,SSIS无疑更好,这是Microsoft的一贯特色,PowerCenter有些地方连右键菜单都没有。
  SSIS的数据流如同PowerCenter的Mapping,SSIS的控制流如同PowerCenter的Task,SSIS的 Package如同PowerCenter的WorkFlow。PowerCenter的Mapping和WorkFlow分开开发,在一个大型开发团队 中,开发人员开发Mapping,而有管理人员将多个Mapping在WorkFlow中统一调度。但如果是只有几个人的开发团队中,这种模式的效率就不 如SSIS了,因为小型团队中每个人都独立工作,开发人员需要开发好Mapping后,再在WorkFlow建立Session,需要再一次为 Session配置连接和参数。相反,SSIS不适合多人开发,因为不像PowerCenter将Mapping和WorkFlow分开开发,所以当一个 人在开发Package时,其他人就插不上手。
  SSIS的运行监控是非常棒的设计,可以看到数据流的执行情况。如果数据流出问题,可以马上知道在那个转换组件上发生了问题。而 PowerCenter的Monitor只能看到源和目标的情况,一旦出状况,就只能看日志了,但在日志大量的文本里,很多时候是找不出问题的所在。除了 执行时监控外,SSIS在开发时可以动态的Validate,而且它的Validate也严格得多。只要发现字段类型对应不上就会报错。 PowerCenter中Port的对应比较自由,比如一个Output的Port可以随意对应到多个Input的Port,而SSIS中一定要用多播组件才行。所以在数据质量方面,SSIS比PowerCenter更有保障,PowerCenter最郁闷的是,报错后却找不到出错的地方。
  就组件的功能上,SSIS比PowerCenter要丰富,像SSIS控制流的循环组件,数据流中的模糊查找、词频计算、数据挖掘评分等组件都 是Informaitca没有的。特别是有很多针对SQL Server组件。如果使用非SQL Server数据库的话,SSIS功能上要打个七折。
  SSIS最致命的问题是数据库连接的兼容性上,数据流中很多组件只认OLE DB连接,而且只有OLE DB数据源组件才可以加参数,这显然是Microsoft有意为之。加上SSIS的Validate比较严格,所以连接到那些对OLE DB兼容不好的数据库就会报错,像我之前连接Oracle 9i就碰到这样的问题。PowerCenter支持更多的数据源,此外还可以连接SAP, PeopleSoft等商业软件,在大型企业中,这些功能是非常方便的。


Informatica VS Kettle
 1、 Informatica属于商业软件,而Kettle是开源软件;Informatica的收费方式是软件一次性购买,但技术支持按项目收费。具体怎么界定项目不清楚。
2、 风险和成本方面自然就不用说了,从某些方面来说的话,风险总是与成本成反比的;
3、 易用性方面,Informatica和Kettle都有GUI图形界面,操作步骤都比较简单易用;主要取决于开发人员的对工具的熟悉情况,没有太大的可比性;
4、 Kettle是基于Java开发的ETL工具,在使用过程中需要借助JVM,在数据抽取速度以及大数据处理能力方面远远不如Informatica;(Kettle在异构数据库的处理能力比同构数据库的处理能力要弱很多,特别是夸服务器之间就更弱了)
5、 Informatica将客户端和服务端进行分离,而Kettle则没有但需要基于JVM;因此Kettle的部署比较简易;
6、 稳定性方面,Informatica也有较大的优势;
7、 Informatica将元数据及一些配置信息存储于配置的数据库,也就是说Informatica需要借助其他数据库才能运行;
8、 Kettle的数据转换过程相对比较灵活,可以是手工编写的SQL语句、Java代码、正则表达式等;Informatica则由Data Quality组件来保证数据的质量,当然也支持SQL语句,两者没有明显的差异;
9、 Informatica和Kettle均有监控日志功能,这也是ETL工具必须具备的,Informatica的监控日志相对要详细一些,但在实际应用中,大多数情况下不需要这么详细;
10、 数据源方面,二者没有明显区别,Kettle支持广泛的数据库、数据文件等,同时支持扩展;Informatica广泛支持各类结构化、非结构化的数据源;


几种 ETL 工具的比较(Kettle,Talend,Informatica 等)
成本:
软件成本包括多方面,主要包括软件产品, 售前培训, 售后咨询, 技术支持等。
开源产品本身是免费的,成本主要是培训和咨询,所以成本会一直维持在一个较低水平。
 商业产品本身价格很高,但是一般会提供几次免费的咨询或支持,所以采用商用软件最初成本很高,但是逐渐下降。
 手工编码最初成本不高,主要是人力成本,但后期维护的工作量会越来越大。

风险:
 项目都是有风险的尤其是大项目。
 项目的风险主要包括:超出预算,项目延期,没有达到用户的满意和期望
 开源产品由于价格上的优势,可以在很大程度上降低项目的风险。

易用性:
Talend:有 GUI 图形界面但是以 Eclipse 的插件方式提供。
Kettle:有非常容易使用的 GUI,出现问题可以到社区咨询。
Informatica:有非常容易使用的 GUI,但是要专门的训练。
Inaplex Inaport:没有GUI

技术支持:
Talend:主要在美国
Kettle:在美国,欧洲(比利时,德国,法国,英国),亚洲(中国,日本,韩国)都可以找到相关技术支持人员。
Informatica:遍布全世界
Inaplex Inaport:主要在英国

部署:
Talend:创建 java 或perl 文件,并通过操作系统调度工具来运行
Kettle:可以使用 job 作业方式或操作系统调度,来执行一个转换文件或作业文件,也可以通过集群的方式在多台机器上部署。
Informatica:需要有 Server
 Inaplex Inaport:需要 .net 2.0

速度:
Talend:需要手工调整,对特定数据源有优化知识。
Kettle:比 Talend 快,不过也需要手工调整,对 Oracle 和 PostGre 等数据源做了优化,同时也取决于转换任务的设计。
Informatica:是最快的
Inaplex Inaport:没有使用什么优化技术。

数据质量:
Talend:在 GUI 里有数据质量特性,可以手工写 SQL 语句。
Kettle:在 GUI 里有数据质量特性,可以手工写 SQL 语句、java脚本、正则表达式来完成数据清洗。
Informatica:专门有一个产品 Informatica Data Quality 来保证数据质量
Inaplex Inaport:因为只处理特定数据,所以比较容易进行数据清洗。

监控:
Talend:有监控和日志工具
Kettle:有监控和日志工具
Informatica:有非常详细的监控和日志工具
Inaplex Inaport:有监控和日志工具

连接性:
Talend:各种常用数据库,文件,web service。
Kettle:非常广泛的数据库,文件,另外可以通过插件扩展。
Informatica:各种数据源
Inaplex Inaport:ODBC 连接

 

 

Logo

更多推荐