主流ETL工具选型
数据仓库ETL工具选择与Workflow优化
数据仓库ETL工具选择与Workflow优化在大数据时代,数据仓库已经成为了企业管理和决策的重要基石。
而ETL工具作为数据仓库建设的关键环节,发挥着至关重要的作用。
本文将探讨数据仓库ETL工具的选择以及如何优化Workflow。
一、数据仓库ETL工具选择数据仓库ETL工具是实现数据抽取、转换和加载的关键工具。
在选择合适的ETL工具时,需考虑以下因素:1. 数据源适配性:不同企业的数据来源各异,因此ETL工具应具备对多种数据源的适配性,包括关系型数据库、文件系统、Web服务等。
2. 数据抽取和转换能力:作为ETL的核心步骤,数据抽取和转换的能力决定了ETL工具的实用性。
一个好的ETL工具应具备多样的抽取和转换功能,包括数据过滤、清洗、聚合、计算等。
3. 并行处理能力:随着数据量的增加,数据仓库的ETL过程往往需要大量的计算和处理。
因此,一个好的ETL工具应具备并行处理能力,以提高数据处理的效率。
4. 作业调度和监控:ETL工具应提供可靠的作业调度和监控功能,能够自动化执行ETL流程,并及时反馈运行情况和错误信息。
5. 扩展性和灵活性:ETL工具应具备良好的扩展性和灵活性,能够适应未来企业的数据需求变化,并支持自定义功能和插件的开发。
综上所述,选择一个适合企业需求的数据仓库ETL工具需要综合考虑以上因素,结合企业的实际情况进行评估和比较,选择最为合适的工具。
二、Workflow优化Workflow是指ETL过程中由多个任务节点组成的工作流,通过优化Workflow可以提升ETL的效率和性能。
以下是一些常见的Workflow优化技巧:1. 并行化处理:将一些可以并行执行的任务节点进行拆分,利用并行处理能力提高整体的处理速度。
2. 数据分区和分片:对于大容量的数据集,可以将其进行分区或分片处理,以减轻单个节点的压力,提高处理效率。
3. 缓存机制:针对经常使用的数据或计算结果,可以引入缓存机制,避免重复抽取和计算,提高数据处理的速度。
超详细的六款主流ETL工具介绍及功能对比
超详细的六款主流ETL⼯具介绍及功能对⽐概述ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业或⾏业应⽤来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握⼀种etl⼯具的使⽤,必不可少。
最近⽤kettle做数据处理⽐较多,所以也就介绍下这⽅⾯内容,这⾥先对⽐下⼏款主流的ETL⼯具。
1、DataPipelineData Pipeline是⼀家为企业⽤户提供数据基础架构服务的科技公司,DataPipeline数据质量平台整合了数据质量分析、质量校验、质量监控等多⽅⾯特性,以保证数据质量的完整性、⼀致性、准确性及唯⼀性,彻底解决数据孤岛和数据定义进化的问题。
2、KettleKettle是⼀款国外开源的ETL⼯具,纯java编写,可以在Windows、Linux、Unix上运⾏,数据抽取⾼效稳定。
Kettle 中⽂名称叫⽔壶,该项⽬的主程序员MATT 希望把各种数据放到⼀个壶⾥,然后以⼀种指定的格式流出。
Kettle家族⽬前包括4个产品:Spoon、Pan、CHEF、Kitchen。
SPOON 允许你通过图形界⾯来设计ETL转换过程(Transformation)。
PAN 允许你批量运⾏由Spoon设计的ETL转换 (例如使⽤⼀个时间调度器)。
Pan是⼀个后台执⾏的程序,没有图形界⾯。
CHEF 允许你创建任务(Job)。
任务通过允许每个转换,任务,脚本等等,更有利于⾃动化更新数据仓库的复杂⼯作。
任务通过允许每个转换,任务,脚本等等。
任务将会被检查,看看是否正确地运⾏了。
KITCHEN 允许你批量使⽤由Chef设计的任务 (例如使⽤⼀个时间调度器)。
KITCHEN也是⼀个后台运⾏的程序。
3、TalendTalend,是⼀家专业的开源集成软件公司,为企业提供开源的中间件解决⽅案,从⽽让企业能够在他们的应⽤,系统以及数据库中赢取更⼤的价值。
在传统软件公司提供封闭、私有的解决⽅案的领域Talend系列软件以开源的形式进⾏开发。
国际三大主流ETL工具分析
国际三大主流ETL工具分析ETL(Extract, Transform, Load)是指将数据从源系统中抽取出来,进行转化(加工、清洗、整合等),然后加载到目标系统中。
在ETL工具的选择上,有许多可供选择的工具。
本文将对国际三大主流ETL工具(Informatica PowerCenter、IBM InfoSphere DataStage和Microsoft SQL Server Integration Services)进行分析。
1. Informatica PowerCenterInformatica PowerCenter是一种广泛应用的ETL工具,它提供了强大的数据集成和数据转换功能。
它具有以下特点:- 强大的数据集成能力:Informatica PowerCenter支持从各种数据源中提取数据,包括关系数据库、文件、Web服务等。
它提供了丰富的连接器和转换函数,可以方便地构建复杂的数据集成过程。
- 易于使用的用户界面:Informatica PowerCenter具有直观的用户界面,使用户可以轻松地构建、调试和管理ETL工作流程。
- 可扩展性和可靠性:Informatica PowerCenter是一个可扩展的平台,可以处理大规模数据集成任务。
它具有高度可靠的作业调度和容错机制,保证数据的准确性和一致性。
- 强大的数据转换能力:Informatica PowerCenter提供了丰富的转换操作和函数,可以进行数据清洗、规范化、分割、合并等操作。
它还支持复杂的业务逻辑和数据处理规则。
2. IBM InfoSphere DataStageIBM InfoSphere DataStage是IBM公司开发的一种ETL工具,它具有以下特点:- 广泛的数据集成能力:InfoSphere DataStage支持从多种数据源中提取数据,包括关系数据库、文件、Web服务等。
它提供了丰富的数据连接器和数据传输功能,可以轻松地完成数据集成任务。
三大主流ETL工具选型
三大主流ETL工具选型ETL(extract, transform and load) 产品乍看起来似乎并不起眼,单就此项技术本身而言,几乎也没什么特别深奥之处,但是在实际项目中,却常常在这个环节耗费太多的人力,而在后续的维护工作中,更是往往让人伤透脑筋。
之所以出现这种状况,恰恰与项目初期没有正确估计ETL工作、没有认真考虑其工具支撑有很大关系。
做ETL产品的选型,仍然需要从以前说的四点(即成本、人员经验、案例和技术支持) 来考量。
在此,主要列举三种主流ETL产品:Ascential公司的Datastage、Informatica公司的Powercenter、NCR Teradata公司的ETL Automation。
其中,ETL Automation相对其他两种有些特别之处,放在后面评述。
旗鼓相当:Datastage与Powercenter就Datastage和Powercenter而言,这两者目前占据了国内市场绝大部分的份额,在成本上看水平相当,虽然市面上还有诸如Business Objects公司的Data Integrator、Cognos公司的DecisionStream,但尚属星星之火,未成燎原之势。
谈Datastage和Powercenter,如果有人说这个就是比那个好,那听者就要小心一点了。
在这种情况下有两种可能:他或者是其中一个厂商的员工,或者就是在某个产品上有很多经验而在另一产品上经验缺乏的开发者。
为什么得出这一结论?一个很简单的事实是,从网络上大家对它们的讨论和争执来看,基本上是各有千秋,都有着相当数量的成功案例和实施高手。
确实,工具是死的,人才是活的。
在两大ETL工具技术的比对上,可以从对ETL流程的支持、对元数据的支持、对数据质量的支持、维护的方便性、定制开发功能的支持等方面考虑。
一个项目中,从数据源到最终目标表,多则上百个ETL过程,少则也有十几个。
这些过程之间的依赖关系、出错控制以及恢复的流程处理,都是工具需要重点考虑。
几款开源的ETL工具介绍
⼏款开源的ETL⼯具介绍ETL,是英⽂ Extract-Transform-Load 的缩写,⽤来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)⾄⽬的端的过程。
ETL 是构建数据仓库的重要⼀环,⽤户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
我们在下⽅列出了 7 款开源的 ETL ⼯具,并讨论了从 ETL 转向“⽆ ETL”的过程,因为 ELT 正迅速成为现代数据和云环境的终极过程。
注:原⽂包含 11 项 ETL ⼯具,本⽂提取了其中开源的 7 项,另增加了⼀款使⽤普遍的 Kettle,如需对另外 4 项进⾏了解,可点击⽂末链接进⾏查看。
优秀的 ETL ⼯具1、Apache CamelApache Camel 是⼀个⾮常强⼤的基于规则的路由以及媒介引擎,该引擎提供了⼀个基于 POJO 的企业应⽤模式(Enterprise Integration Patterns)的实现,你可以采⽤其异常强⼤且⼗分易⽤的 API (可以说是⼀种 Java 的领域定义语⾔ Domain Specific Language)来配置其路由或者中介的规则。
通过这种领域定义语⾔,你可以在你的 IDE 中⽤简单的 Java Code 就可以写出⼀个类型安全并具有⼀定智能的规则描述⽂件。
2、Apache KafkaApache Kafka 是⼀个开源的消息系统,⽤ Scala 和 Java 写成。
该项⽬为处理实时数据提供了⼀个统⼀、⾼通量、低延时的平台。
有如下特性:通过 O(1) 的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。
⾼吞吐量:即使是⾮常普通的硬件 kafka 也可以⽀持每秒数⼗万的消息。
⽀持通过 kafka 服务器和消费机集群来分区消息。
⽀持 Hadoop 并⾏数据加载。
ETL工具选型
ETL工具选型1 简介根据以往数据仓库项目的经验,在一个数据仓库项目中,ETL设计和实施的工作量一般要占总项目工作量的50%-70%,而且数据仓库项目一般会存在二次需求的问题,客户在项目的实施过程中或者使用过程中会提出新的业务需求,而任何前端业务模型的改变都会涉及到ETL设计,因此ETL工具的选择对于整个数据仓库项目的成功是非常重要的。
2 ETL工具选型ETL工具必须提供非常简单易用的维护界面来定义和维护这种变化,同时能提供相关元数据管理,以便于将来对整个ETL过程进行维护和监控。
正确选择ETL工具,可以从ETL对平台的支持、对数据源的支持、数据转换功能、管理和调度功能、集成和开放性、对元数据管理等功能并结合成本、人员经验、案例和技术支持出发,具体如下。
2.1 支持平台随着各种应用系统数据量的飞速增长和对业务可靠性等要求的不断提高,人们对数据抽取工具的要求往往是将几十、上百个GB的数据在有限的几个小时内完成抽取转换和装载工作,这种挑战势必要求抽取工具对高性能的硬件和主机提供更多支持。
因此,我们可以从数据抽取工具支持的平台,来判断它能否胜任企业的环境,目前主流的平台包括SUN Solaris、HP-UX、IBM AIX、AS/400、OS/390、Sco UNIX、Linux、Windows等。
2.2 支持数据源对数据源支持的重要性不言而喻,因此这个指标必须仔细地考量。
首先,我们需要对项目中可能会遇到的各种数据源有一个清晰的认识;其次对各种工具提供的数据源接口类型也要有深入了解,比如,针对同一种数据库,使用通用的接口(如ODBC/JDBC)还是原厂商自己的专用接口,数据抽取效率都会有很大差别,这直接影响到我们能不能在有限的时间内完成ETL任务。
常见的数据源供参考:DB2、Informix、Oracle、Sybase、SQL Server、Teredata、OleDB、SAS、Text、Excel、SAP、Peoplesoft、IMS、VSAM、QSAM on 390、FTP、XML、MessageQueue、Weblog、Essbase等。
ETL工具——DataX,FlinkX
ETL⼯具——DataX,FlinkX⼀、DataXDataX 是阿⾥巴巴集团内被⼴泛使⽤的离线数据同步⼯具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间⾼效的数据同步功能。
DataX本⾝作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向⽬标端写⼊数据的Writer插件,理论上DataX框架可以⽀持任意数据源类型的数据同步⼯作。
同时DataX插件体系作为⼀套⽣态系统, 每接⼊⼀套新数据源该新加⼊的数据源即可实现和现有的数据源互通。
1、DataX的安装DataX不需要依赖其他服务,直接上传、解压、安装、配置环境变量即可也可以直接在windows上解压上传解压到soft⽬录下配置环境变量2、DataX使⽤1、git仓库导⼊GitHub仓库,没有外⽹建议使⽤这种⽅式查看模板有外⽹直接访问GitHub仓库2、streamTostream到datax/job⽬录下编写json⽂件然后执⾏{"job": {"content": [{"reader": {"name": "streamreader","parameter": {"sliceRecordCount": 10,"column": [{"type": "long","value": "10"},{"type": "string","value": "hello,你好,世界-DataX"}]}},"writer": {"name": "streamwriter","parameter": {"encoding": "UTF-8","print": true}}}],"setting": {"speed": {"channel": 5}}}}执⾏同步任务datax.py stream2stream.json3、mysqltomysql需要新建student2数据库,并创建student表json⽂件{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["id","name","age","gender","clazz","last_mod"],"splitPk": "age","connection": [{"table": ["student"],"jdbcUrl": ["jdbc:mysql://master:3306/student"]}]}},"writer": {"name": "mysqlwriter","parameter": {"writeMode": "insert","username": "root","password": "123456","column": ["id","name","age","gender","clazz","last_mod"],"preSql": ["truncate student2"],"connection": [{"jdbcUrl": "jdbc:mysql://master:3306/student2?useUnicode=true&characterEncoding=utf8", "table": ["student2"]}]}}}],"setting": {"speed": {"channel": 6}}}}新建表use student2;CREATE TABLE `student2` (`id` int(10) NOT NULL AUTO_INCREMENT,`name` char(5) DEFAULT NULL,`age` int(11) DEFAULT NULL,`gender` char(2) DEFAULT NULL,`clazz` char(4) DEFAULT NULL,`last_mod` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1500101002 DEFAULT CHARSET=utf8执⾏json⽂件datax.py mysqltomysql.json4、mysqltohive写hive跟hdfs时⼀样的编写配置json⽂件{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["id","name","age","gender","clazz","last_mod"],"splitPk": "age","connection": [{"table": ["student"],"jdbcUrl": ["jdbc:mysql://master:3306/student"]}]}},"writer": {"name": "hdfswriter","parameter": {"defaultFS": "hdfs://master:9000","fileType": "text","path": "/user/hive/warehouse/datax.db/students","fileName": "student","column": [{"name": "id","type": "bigint"},{"name": "name","type": "string"},{"name": "age","type": "INT"},{"name": "gender","type": "string"},{"name": "clazz","type": "string"},{"name": "last_mod","type": "string"}],"writeMode": "append","fieldDelimiter": ","}}}],"speed": {"channel": 6}}}}hive建库建表create table students(id bigint,name string,age int,gender string,clazz string,last_mod string)ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';执⾏datax.py mysqltohdfs.json5、mysqltohbasemysql中的score表需将cource_id改为course_id,并将student_id、course_id设为主键,并将所有字段的类型改为int hbase需先创建score表:create 'score','cf1'{"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["student_id","course_id","score"],"splitPk": "course_id","connection": [{"table": ["score"],"jdbcUrl": ["jdbc:mysql://master:3306/student"]}]}},"writer": {"name": "hbase11xwriter","parameter": {"hbaseConfig": {"hbase.zookeeper.quorum": "master:2181"},"table": "score","mode": "normal","rowkeyColumn": [{"index":0,"type":"string"},{"index":-1,"type":"string","value":"_"},{"index":1,"type":"string"}],"column": ["index":2,"name": "cf1:score","type": "int"}],"encoding": "utf-8"}}}],"setting": {"speed": {"channel": 6}}}}datax.py mysqltohbase.json6、hdfstohbase将students.txt数据上传⾄HDFS的/data/student1/⽬录在HBase中创建datax表:create 'datax','cf1'{"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "hdfsreader","parameter": {"path": "/data/student1/","defaultFS": "hdfs://master:9000","column": [{"index": 0,"type": "string"},{"index": 1,"type": "string"},{"index": 2,"type": "string"},{"index": 3,"type": "string"},{"index": 4,"type": "string"},{"index": 5,"type": "string"}],"fileType": "text","encoding": "UTF-8","fieldDelimiter": ","}},"writer": {"name": "hbase11xwriter","parameter": {"hbaseConfig": {"hbase.zookeeper.quorum": "master,node1,node2" },"table": "datax","mode": "normal","rowkeyColumn": [{"index": 0,"type": "string"},{"index": -1,"type": "string","value": "_"},{"index": 1,"type": "string"}],"column": [{"index": 2,"name": "cf1:age","type": "string"},{"index": 3,"name": "cf1:gender","type": "string"},{"index": 4,"name": "cf1:clazz","type": "string"},{"index": 5,"name": "cf1:ts","type": "string"}],"versionColumn": {"index": 5},"encoding": "utf-8"}}}]}}7、mysqltophoenix在Phoenix中创建STUDENT表CREATE TABLE IF NOT EXISTS STUDENT ( ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR,AGE BIGINT,GENDER VARCHAR ,CLAZZ VARCHAR);编写配置⽂件MySQLToPhoenix.json {"job": {"setting": {"speed": {"channel": 3},"errorLimit": {"record": 0,"percentage": 0.02}},"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["id","name","age","clazz"],"splitPk": "id","connection": [{"table": ["student"],"jdbcUrl": ["jdbc:mysql://master:3306/student?useSSL=false"]}]}},"writer": {"name": "hbase11xsqlwriter","parameter": {"batchSize": "256","column": ["ID","NAME","AGE","GENDER","CLAZZ"],"hbaseConfig": {"hbase.zookeeper.quorum": "master,node1,node2","zookeeper.znode.parent": "/hbase"},"nullMode": "skip","table": "STUDENT"}}}]}}执⾏datax.py xxxxx3、datax⾃定义参数Linux给⽂件替换字符串/替换内容/替换某⾏ (shell,sed)在⽂件⾥⾯替换命令修改sed 's/$$$/007/g' test.jsonjson⽂件(加⼊where筛选并加上参数){"job": {"content": [{"reader": {"name": "mysqlreader","parameter": {"username": "root","password": "123456","column": ["id","name","age","gender","clazz","last_mod"],"splitPk": "age","where":"last_mod>'$param$'""connection": [{"table": ["student"],"jdbc:mysql://master:3306/student"]}]}},"writer": {"name": "streamwriter","parameter": {"encoding": "UTF-8","print": true}}}],"setting": {"speed": {"channel": 5}}}}写定义参数脚本#!/bin/bashsed 's/\$param\$/20211207/g' test.json执⾏脚本获取每天时间,实现增量#!/bin/bashparam1=$(date "+%Y-%m-%d")sed -i "s/'\$param\$'/$param1/g" /usr/local/soft/datax/job/test.jsondatax.py /usr/local/soft/datax/job/test.jsonsed -i "s/$param1/'\$param\$'/g" /usr/local/soft/datax/job/test.json⼆、FlinkX1、安装1、上传解压直接Windows桌⾯拖进Linux系统上传,如果不⾏可以下载依赖包yum -y install lrzsz安装unzip:yum install unzip,并解压压缩包unzip flinkx-1.10.zip -d /usr/local/soft/2、配置环境变量,修改配置⽂件web服务端⼝,不指定的话会随机⽣成⼀个vim flinkconf/flink-conf.yamlrest.bind-port: 8888给bin/flinkx这个⽂件加上执⾏权限chmod a+x flinkx配置环境变量2、flinkx简单使⽤访问GitHub搜素flinkx有快速⼊门1、MySQLToHDFSjson⽂件{"job": {"content": [{"reader": {"parameter": {"username": "root","password": "123456","connection": [{"jdbcUrl": ["jdbc:mysql://master:3306/student?characterEncoding=utf8" ],"table": ["student"]}],"column": ["*"],"customSql": "","where": "clazz = '理科⼆班'","splitPk": "","queryTimeOut": 1000,"requestAccumulatorInterval": 2},"name": "mysqlreader"},"writer": {"name": "hdfswriter","parameter": {"path": "hdfs://master:9000/data/flinkx/student","defaultFS": "hdfs://master:9000","column": [{"name": "col1","index": 0,"type": "string"},{"name": "col2","index": 1,"type": "string"},{"name": "col3","index": 2,"type": "string"},{"name": "col4","index": 3,"type": "string"},{"name": "col5","index": 4,"type": "string"},{"name": "col6","index": 5,"type": "string"}],"fieldDelimiter": ",","fileType": "text","writeMode": "overwrite"}}}],"setting": {"restore": {"isRestore": false,"isStream": false},"errorLimit": {},"speed": {"channel": 1}}}}启动任务flinkx -mode local -job /usr/local/soft/flinkx-1.10/job/mysqlToHDFS.json -pluginRoot /usr/local/soft/flinkx-1.10/syncplugins/ -flinkconf /usr/local/soft/flinkx-1.10/flinkconf/监听⽇志flinkx 任务启动后,会在执⾏命令的⽬录下⽣成⼀个nohup.out⽂件tail -f nohup.out//实时查看tail -n 200 nohup.out //看后200⾏通过客户端查看,任务启动客户端可查看http://master:88882、MySQLToHivejson⽂件{"job": {"content": [{"reader": {"parameter": {"username": "root","password": "123456","connection": [{"jdbcUrl": ["jdbc:mysql://master:3306/student?characterEncoding=utf8"],"table": ["student"]}],"column": ["*"],"customSql": "","where": "clazz = '⽂科⼆班'","splitPk": "id","queryTimeOut": 1000,"requestAccumulatorInterval": 2},"name": "mysqlreader"},"writer": {"name": "hivewriter","parameter": {"jdbcUrl": "jdbc:hive2://master:10000/testflinkx","username": "","password": "","fileType": "text","fieldDelimiter": ",","writeMode": "overwrite","compress": "","charsetName": "UTF-8","maxFileSize": 1073741824,"tablesColumn": "{\"student\":[{\"key\":\"id\",\"type\":\"string\"},{\"key\":\"name\",\"type\":\"string\"},{\"key\":\"age\",\"type\":\"string\"}]}","defaultFS": "hdfs://master:9000"}}}],"setting": {"restore": {"isRestore": false,"isStream": false},"errorLimit": {},"speed": {"channel": 3}}}}在hive中创建testflinkx数据库,并创建student分区表create database testflinkx;use testflinkx;CREATE TABLE `student`(`id` string,`name` string,`age` string)PARTITIONED BY (`pt` string)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','启动hiveserver2# 第⼀种⽅式:hiveserver2# 第⼆种⽅式:hive --service hiveserver2启动任务flinkx -mode local -job /usr/local/soft/flinkx-1.10/jsonConf/mysqlToHive.json -pluginRoot /usr/local/soft/flinkx-1.10/syncplugins/ -flinkconf /usr/local/soft/flinkx-1.10/flinkconf/ 3、MySQLToHBasejson⽂件{"job": {"content": [{"reader": {"parameter": {"username": "root","password": "123456","connection": [{"jdbcUrl": ["jdbc:mysql://master:3306/student?characterEncoding=utf8"],"table": ["score"]}],"column": ["*"],"customSql": "","splitPk": "student_id","queryTimeOut": 1000,"requestAccumulatorInterval": 2},"name": "mysqlreader"},"writer": {"name": "hbasewriter","parameter": {"hbaseConfig": {"hbase.zookeeper.property.clientPort": "2181","hbase.rootdir": "hdfs://master:9000/hbase","hbase.cluster.distributed": "true","hbase.zookeeper.quorum": "master,node1,node2","zookeeper.znode.parent": "/hbase"},"table": "testFlinkx","rowkeyColumn": "$(cf1:student_id)_$(cf1:course_id)","column": [{"name": "cf1:student_id","type": "string"},{"name": "cf1:course_id","type": "string"},{"name": "cf1:score","type": "string"}]}}}],"setting": {"restore": {"isRestore": false,"isStream": false},"errorLimit": {},"speed": {"channel": 3}}}}启动hbase 并创建testflinkx表create 'testFlinkx','cf1'启动任务flinkx -mode local -job /usr/local/soft/flinkx-1.10/jsonConf/mysqlToHBase.json -pluginRoot /usr/local/soft/flinkx-1.10/syncplugins/ -flinkconf /usr/local/soft/flinkx-1.10/flinkconf/。
一份全面的企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)
一份全面的企业数据产品选型对比(含数仓、报表、BI、中台、数据治理)编辑导语:在如今这个数据化时代,数据对于个人和企业来说,其重要性都不可小觑。
因此,有不少企业强化了数据工作,加强企业数据建设。
接下来,本文作者整理了一份超全面的企业数据产品的选型对比,希望对大家有所帮助。
前言:这个从上至下都在强调数字化转型的时代,越来越多公司重视数据,也越来越多的企业有数据建设的需求。
企业无论做任何数据工作,必然要有一定的信息化基础,也要有数据化建设的基础,少不了数据平台、数据应用工具,数据管理工具等。
关于企业数据建设这块,本人从事了近7年,从技术到项目管理,做过乙方也做过甲方,也有多年和各乙方厂商打交道的经验,遂来分享选型“内幕”。
涉及到的产品有:数仓、大数据平台、报表、BI、数据中台、数据治理等。
数据仓库算是一个解决方案,视企业需求有不同架构(传统数仓、数据集市、大数据平台等),架构下有很多分层和组件,比起工具更需要架构师能力,具体原理就不讲了。
关于数仓的选型主要涉及:数据存储方案、ETL、还有前端应用。
底层的数据仓库服务器通常是一个关系数据库系统,常用的方案有Oracle、db2、还有greenplum、teredata等数据仓库专业解决方案。
传统的关系型数据库有:oracle、mysql、DB2。
大规模并行处理数据库:Vertica、Teradata(商业)、Greenplum (开源)。
Teradata老江湖了,银行业使用较多,但成本也是真的贵,目前我们做项目较多的是用Greenplum,算是业界最快和最高性价比的高端数据仓库解决方案,Greenplum是基于PostgreSQL的,于2022年开源。
我知道的国内四大行有3家在用,5大物流公司有4家在用,不少公司在从Teradata迁移到GP。
大数据平台主流的是:Hadoop+Hive。
这套方案有多通用不用多说了,后面说到的大数据平台厂商也大多基于这个来设计平台产品。
数据仓库中ETL工具的选型与使用
数据仓库中ETL工具的选型与使用随着企业信息化的深入发展,数据仓库在企业的日常运营中扮演着越来越重要的角色。
而在数据仓库建设中,ETL工具起着至关重要的作用。
本文将结合笔者多年的从业经验,深入探讨数据仓库中ETL工具的选型与使用,旨在为读者提供一些有用的参考。
一、ETL工具的概述首先,我们来了解一下ETL工具的概念。
ETL工具是指一类用于将不同来源的数据进行抽取(Extract)、转换(Transform)、加载(Load)等操作的软件。
在数据仓库中,ETL工具类似于“数据加工车间”,可以完成数据的清洗、整合、转换等多种工作。
目前市面上比较流行的ETL工具有很多,例如IBM DataStage、Informatica PowerCenter、Oracle Data Integrator等。
每个ETL工具都有其独特的特点及适用场景,选择一款合适的ETL工具非常关键。
二、ETL工具的选型在ETL工具的选型中,需要考虑以下几个方面:1. 企业规模及需求企业规模及需求是选择ETL工具的首要考虑因素。
对于规模较小的企业,可以选择一些开源的ETL工具,如Kettle和Talend Open Studio。
这些工具具有操作简便、易于掌握、可扩展性强等优点,适合小型企业以及需要快速实现数据仓库的项目。
而若企业具有大规模的数据仓库及数据流转需求,可以考虑一些成熟的商业ETL工具,如IBM DataStage、Informatica PowerCenter、Oracle Data Integrator等。
这些工具具有高度可靠性、高性能、强大的数据处理能力等优点,可以满足企业不断发展的需求。
2. 数据量及复杂度数据量及复杂度也是选择ETL工具的一个重要考虑因素。
对于数据量较小、简单的企业,可以选择一些基础的ETL工具,如Microsoft SQL Server Integration Services等。
这些工具主要用于数据提取、转换、加载等基础操作,适合数据量较小及较为简单的企业。
ETL工具对比参考文档
E T L工具对比参考文档(总13页)-CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除参考1:参考2:数据整合部分:PowerCenter,是业界公认领导者数据质量管理:Data Quality,成熟稳定技术,在中国有大规模应用的成功案例。
数据整合部分:Datastage,属于业界一类产品数据质量管理:QualityStage,收购的技术,不是主要其主要产实时数据捕获:PowerExchange,业界领先实时采集技术,支持广泛数据源的CDC和Realtime,与PowerCenter无缝集成。
元数据管理:Metadata Manager,是业界领先的企业级元数据管理平台,可做到字段级的元数据各项分析,有广泛的元数据采集接口,图形化无需编程,并可自动维护变更。
品组成实时数据捕获:MQ和DataMirror 的技术,技术复杂,与DataStage 是不同风格产品,产品的耦合度极差。
元数据管理:MetaStage,几乎免费的产品,应用性极差,并不能管理企业级的元数据。
而新推出的产品与旧有产品线耦合度差,并未经过市场的考验。
Informatica 是全图形化的开发模式,不需要编码,工具易使用,界面友好、直观。
专业的三天培训,可使开发人员快速入门,进行开发设计。
开发人员只要懂得数据库知识,即可。
Informatica 产品是以元数据为核心的,其开发过程中,所有的元数据,包括规则和过程,均是可复用,共享的。
经过简单配置即可支持大数据量的处理。
Informatica是完全基于引擎级别的,所有功能模块化,扩展性强,维护成本低。
虽然也是图形化的界面,但复杂的转换过程,里面嵌入了很多类Basic脚本的成份。
要求开发人员,有编程语言基础。
在处理大数据量,必须使用Datastage企业版。
但如果客户原先使用的Datastage 标准版,其作业的版本移植问题很大。
数据仓库的工具
数据仓库的工具数据仓库是一个用于集中存储、管理和分析大量数据的系统。
为了有效地构建和维护数据仓库,许多工具和技术已被开发出来。
这些工具可以帮助企业在提供高性能数据存储和处理能力的同时,实现对数据的高效管理和分析。
下面是一些常用的数据仓库工具的简介:1. ETL工具:ETL(抽取、转换和加载)工具用于从各种数据源抽取数据并将其加载到数据仓库中。
这些工具不仅可以确保数据的有效传输和处理,还可以进行数据清洗、转换和整合,以使其符合数据仓库的要求。
常见的ETL工具包括Informatica PowerCenter、IBM InfoSphere DataStage和Microsoft SSIS(SQL Server Integration Services)等。
2. 数据仓库管理工具:数据仓库管理工具用于管理数据仓库的各种操作和维护任务。
它们可以提供数据仓库的配置、监控、备份和恢复等功能。
这些工具还可以帮助管理员监控数据仓库的性能,并提供报告和分析功能。
常见的数据仓库管理工具包括Teradata Viewpoint、Oracle Enterprise Manager和Microsoft SQL Server Management Studio等。
3. 数据挖掘工具:数据挖掘工具用于从数据仓库中发现隐藏的模式和信息。
它们使用各种算法和技术来分析大量的数据,以提取有用的信息和洞察。
数据挖掘工具可以帮助企业预测趋势、识别关联性和制定智能决策。
常见的数据挖掘工具包括IBM SPSS Modeler、SAS Enterprise Miner和RapidMiner等。
4. 可视化工具:可视化工具用于将数据仓库中的数据转化为易于理解和解释的图形和图表。
这些工具帮助用户直观地理解数据关系、趋势和模式,并提供交互式的数据探索和筛选功能。
常见的可视化工具包括Tableau、QlikView和Power BI等。
5. 查询和报告工具:查询和报告工具用于从数据仓库中提取数据并生成定制的报告和查询结果。
MySQL技术数据分析与ETL工具推荐
MySQL技术数据分析与ETL工具推荐导语:在当今信息化时代,数据已经成为企业决策的重要依据。
而MySQL作为一种开源数据库管理系统,被广泛应用于各个领域。
本文将探讨MySQL技术在数据分析中的应用,并介绍几款主流的ETL工具,以帮助读者更好地进行数据分析和处理。
一、MySQL技术在数据分析中的应用1. 数据收集与存储MySQL作为一个关系型数据库管理系统,具有稳定性和可扩展性,并支持大规模数据的存储与管理。
在数据分析过程中,我们可以通过编写SQL语句来收集、存储和管理数据,便于后续的查询与分析。
2. 数据清洗与预处理在数据分析的过程中,原始数据往往存在着各种问题,如缺失值、异常值、重复值等。
MySQL提供了丰富的SQL语句和函数,可以用于数据清洗与预处理。
通过使用这些语句和函数,我们可以对原始数据进行清洗、转换和整理,以便后续的分析和挖掘。
3. 数据分析与挖掘MySQL支持复杂查询和数据分析功能。
通过编写复杂的SQL查询语句,我们可以实现各种数据分析和挖掘操作,如排序、聚合、分组、连接等。
此外,MySQL还支持存储过程和触发器,可以用于实现更复杂的数据处理和分析逻辑。
二、ETL工具推荐ETL(Extract-Transform-Load)工具是一种用于数据抽取、转换和加载的软件工具。
在数据分析过程中,ETL工具可以帮助我们将原始数据从不同的数据源中提取出来,并进行必要的转换与加载,以方便后续的分析与挖掘。
下面是几款常用的ETL工具推荐:1. TalendTalend是一款功能强大且易于使用的开源ETL工具。
它提供了直观的图形化界面,可以帮助用户快速构建ETL作业。
Talend支持多种数据源类型,包括关系型数据库、文件、Web服务等,并提供了丰富的转换函数和操作符,方便用户进行复杂的数据转换与加载。
2. Pentaho Data IntegrationPentaho Data Integration(PDI)是一款功能全面的ETL工具,提供了强大的数据整合和处理能力。
常用ETL工具对比
常用ETL工具对比
目前市场上主流的ETL工具有,IBM公司的DataStage、Informatica公司的Powercenter、免费ETL工具Kettle等等。
1、Datastage
DataStage 是一套专门对多种操作数据源的数据抽取、转换和维护过程进行简化和自动化,并将其输入数据集市或数据仓库目标数据库的集成工具。
他的优点如下:具有多种数据源的连接能力,包括目前市场上的大部分主流数据库,并且具有优秀的文本文件和XML文件读取和处理能力。
2、Informatica
Informatica PowerCenter用于访问和集成几乎任何业务系统、任何格式的数据,它可以按任意速度在企业内交付数据,具有高性能、高可扩展性、高可用性的特点。
Informatica PowerCenter包括4个不同版本,即:标准版,实时版,高级版,云计算版。
同时,它还提供了多个可选的组件,以扩展Informatica PowerCenter的核心数据集成功能,这些组件包括:数据清洗和匹配、数据屏蔽、数据验证、Teradata双负载、企业网格、元数据交换、下推优化(Pushdown Optimization)、团队开发和非结构化数据等。
3、Kettle
Kettle是一款国外开源的etl工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定,提供丰富的sdk,并开放源代码,便于二次开发包装。
常见的三款ETL工具比较
支持 能够捕获表结构的变化
DataStage TX产品
设计手段和产品组合来支持 设计手段和产品组合来支持 设计手段和产品组合来支持 设计手段和产品组合来支持
支持 支持 支持 支持
支持
有 支持 有 需要用DataStage TX产品
支持,但对于进程附加任务无法监控
支持 支持(多种时间和事件) 支持
支持 支持(包括ETL任务和其他EXE,BAT等任务的监控和返回 值的获得)
数据库的load stage) 支持
SQL Server和Altibase等数据库) 支持
支持
设计手段和产品组合来支持
支持
较好
较好
较好
较快
较好
较好
采用RDBMS储存,支持多种OS
支持 支持
支持 支持
支持
支持
支持(Metad换 (Metadata Exchange) 支持
wwwg1comproductscustomerdataquality专门做数据质量管理etl例外跟踪与监控支持支持支持支持数据预览etl例外捕获与处理支持支持支持支持数据预览出错分析功能支持有语法检查功能支持调试功能支持支持支持支持数据预览和运行瓶颈的定位日志功能支持支持但不能导出成文本也不能为外部程序利用支持故障容错与恢复支持不支持设计手段和产品组合来支持增量抽取支持策略设计手段和产品组合来支持支持设计手段和产品组合来支持数据变化捕获设计手段和产品组合来支持能够捕获表结构的变化设计手段和产品组合来支持消息队列设计手段和产品组合来支持设计手段和产品组合来支持实时数据抽取设计手段和产品组合来支持datastagetx产品设计手段和产品组合来支持任务调度计划支持支持基于时间的调度基于事件的调度支持支持支持多种时间和事件提供调度的api供运维平台调用支持支持并发任务调度支持需要用datastagetx产品支持任务的监控支持支持但对于进程附加任务无法监控支持包括etl任务和其他exebat等任务的监控和返回值的获得高级功能错误信息的捕捉支持支持但很多时候信息不准确支持包括将错误信息发送email在指定的计算机上弹出窗口发手机短信等功能专用数据库驱动支持支持大批量数据转移调用数据库自身功能load支持没有通过写脚本间接支持7版后有针对不同数据库的loadstage支持oracledb2sybaseinformixredbricksqlserver和altibase等数据库进程并发处理支持支持支持线程并发处理支持支持负载均衡powercenter支持设计手段和产品组合来支持对cpu内存的可管理和分配支持支持稳定性在nt平台上不够稳定较好较好处理速度较快较好较快大数据量压力测试810g小时较好较好元数据是否采用rdbms储存os支持情况采用rdbms储存支持多种os采用rdbms存储如果客户没有rdbmssagent内置提供mysql支持多种os元数据库备份恢复支持支持支持元数据库的迁移支持支持支持
主流ETL工具 VS ETLPlus V5
4. 调度架构
DataStage 和 PowerCenter 架构都采用调度服务器负责制,即调度和作业执行,都由调 度服务器来执行,这样结构的缺点是,对于不在同一台机器的几个作业要组成作业流,必须 作业自身写程序来实现。增加了系统的复杂性。 ETLPlus5 采用管理服务器+调度服务器+代理的三层体系结构。作业触发由调度服务器 负责,真正执行作业的是代理。同一个作业流的作业可以部署在不同代理上,真正做到了分 布式部署和分布式调度。 比较:ETLPlus5 采用的调度服务器+代理架构更灵活,真正做到了分布式作业调度,并 容易提供更好地负载均衡。
2.9. 监控
PowerCenter: C/S 界面,支持按时间和列表两个维度的作业流状态和关联历史信息查 询 DataStage:C/S 界面,支持列表方式的作业执行状态查询。 ETLPlus5:B/S 界面,支持作业流、作业的总体监控和按计划和事件查看作业流状态, 也可查询作业流和作业历史状态。 比较: ETLPlus5 的 B/S 监控界面更容易集成,既可以监控作业流和作业的整体情况,也可以 看到历史状态,监控更全面和方便。
主流 ETL 工具 VS ETLPlus5
2.8. ETL 工作流
PowerCenter: 支持顺序、并行工作流,支持事件、时间、文件到达触发,支持 Email, 循环调度需逻辑实现。 DataStage:支持顺序、并行工作流,支持时间、文件到达触发,不支持事件触发,支 持 Email,支持循环调度。 ETLPlus5:支持顺序、并行工作流,支持事件、时间、文件到达触发,支持 Email,支 持循环调度。 比较: PowerCenter 没有循环工作流组件, 通过它的事件触发机制可以实现 ETL 工作流循环的 能力。 DataStage 没有事件触发机制,需通过 shell 命令逻辑实现。 ETLPlus 支持以上所有工作流特性。
主流数据同步ETL工具的比较
视图增量交换整合任务(增量触发方式可 需另购ODI产品;不支持二进制 步任务;不支持二进制文件的
选:CDC触发、标识位、时间戳、触发器 文件的复制同步任务,不支持 复制同步任务场景; 不支持
、全量比对);6. 自定义SQL-EL任务; 7. 文 数据文件加载数据库/仓库的任 WS/REST服务对接; 没有数据比
件交换任务;8. 数据文件加载任务; 9. 务场景;不支持WS/REST服务 对的任务功能
WS/REST服务对接任务
对接;没有数据比对的功能
支持批处理的任务 (ETL),不支持日志模式 的CDC增量复制同步任 务;不支持二进制文件 的复制同步任务场景; 不 支持WS/REST服务对接; 没有数据比对的任务功 能
设 计 及 架 构
使用方式
完全web图形化界面“点击式”任务设计和 监控管理,简单易用,不需要额外的开发 没有图形化的界面,操作皆为 和生产发布;无需在源库端或目标库端部 命令行方式,可配置能力差。 署代理程序,对源库性能影响几乎为零; 界面配置管理工具需单独购买 高级版支持多租户SaaS服务平台的使用方 。 式
自动断点续 传
所有任务类型均支持断点续传;且集群版 中任务转移后,任务在新节点会自动从断 点续传
支持
不支持
不支持
不支持,依赖ETL设计的合 理性(例如T-1),指定续 读某个时间点的数据,非自 动
功
能
图形界面化、自动化的schema mapping
异构转换映 和智能化的异构数据类型匹配;支持
射
schema级、表级、字段级的映射和记录
支持:1.全量任务;2.实时增量任务(日志 只支持CDC增量(日志模式)的复
CDC);3. 全量+增量任务(源库不停服模 制同步任务,不支持全量任 支持批处理的任务(ETL),不支
数据仓库架构及各组件方案选型
底层:数据仓库服务器的数据库作为底层,通常是一个关系数据库系统,使用后端 工具将数据清理、转换并加载到该层。 中间层:数据仓库中的中间层是使用 ROLAP 或 MOLAP 模型实现的 OLAP 服务器。 对于用户,此应用程序层显示数据库的抽象视图,这一层还充当最终用户和数据库 之间的中介。 顶层:顶层是前端应用层,连接数据仓库并从数据仓库获取数据或者 API,通常的 应用包括数据查询、报表制作、BI 数据分析、数据挖掘还有一些其他的应用开 发。 从功能应用和技术架构来展开,以下是一张中大型企业的很详细的数据仓库架构图 了。
传统上数据仓库的存储从 100GB 起,直连可能会导致数据查询处理速度慢, 因为要直接从数据仓库查询准确的数据,或者是准确的输入,过程中要过滤掉 很多非必要数据,这对数据库以及前端 BI 工具的性能要求相当高,基本性能 不会太高。
另外,在处理复杂维度分析时性能也受限,由于其缓慢性和不可预测性,很少 应用在大型数据平台。要执行高级数据查询,数据仓库应该在低级实例下被扩 展从而简化数据查询。
数据仓库架构及各组件方案选型
企业数据仓库架构
关于数据仓库,有一种简单粗暴的说法,就是“任何数据仓库都是通过数据集成 工具连接一端的原始数据和另一端的分析界面的数据库”。
数据仓库用来管理企业庞大的数据集,提供转换数据、移动数据并将其呈现给 终端用户的存储机制。许多架构方法以这样或那样的方式扩展数据仓库的能力, 我们讲集中讨论最本质的问题,在不考虑过多技术细节的情况下,整个层次架 构可以被划分为 4 层:
• 原始数据层(数据源) • 数据仓库架构形态 • 数据的采集、收集、清洗和转换 • 应用分析层
单层架构(直连)
大多数情况下,数据仓库是一个关系型数据库,包含了允许多维数据的模块, 或者分为多个易于访问的多主题信息域,最简单的数据仓库只有一层架构。
ETL解决方案资料
ETL解决方案资料ETL(Extract-Transform-Load)是一种数据仓库技术,用于将数据从源系统中抽取出来,通过各种转换和清洗操作,最终加载到目标系统中。
ETL解决方案的目标是实现高效、可靠和可扩展的数据集成。
本文将介绍ETL解决方案的基本原理、主要组成部分和常见工具的使用。
一、ETL解决方案的基本原理1. 数据抽取(Extract):数据抽取是将数据从源系统中提取出来的过程。
这个过程可以基于多种方式实现,如读取数据库表、读取文件、访问API接口等。
抽取的数据可以是全量数据,也可以是增量数据。
2. 数据转换(Transform):数据转换是将抽取得到的数据进行各种转换和清洗操作的过程。
这个过程可以包括数据格式转换、数据合并、数据过滤、数据清洗、数据计算等。
数据转换的目的是使得数据能够符合目标系统的数据模型和要求。
3. 数据加载(Load):数据加载是将经过转换的数据加载到目标系统中的过程。
目标系统可以是数据仓库、数据湖、OLAP数据库等。
加载的方式可以是全量加载,也可以是增量加载。
加载的数据可以是维度数据和事实数据。
二、ETL解决方案的主要组成部分1.抽取引擎:抽取引擎负责从源系统中提取数据。
抽取引擎可以是基于SQL的查询引擎,也可以是基于API接口的数据提供者。
抽取引擎的选择取决于源系统的类型和数据提取的需求。
2.转换引擎:转换引擎负责将提取得到的数据进行各种转换和清洗操作。
转换引擎可以是基于规则的转换引擎,也可以是编程语言或脚本语言。
转换引擎的选择取决于转换操作的复杂性和灵活性的需求。
3.加载引擎:加载引擎负责将经过转换的数据加载到目标系统中。
加载引擎可以是基于SQL的数据加载引擎,也可以是专门的ETL工具。
加载引擎的选择取决于目标系统的类型和加载操作的需求。
4.元数据管理:元数据管理负责管理ETL流程的元数据,包括数据源的结构信息、转换规则的定义信息、目标系统的结构信息等。
元数据管理可以基于数据库实现,也可以是基于元数据管理工具。
ETL概述及部分工具比较
ETL概述及部分工具比较ETL的重要性ETL即数据抽取(Extract)、转换(Transform)、装载(Load)的过程,在数据仓库建置过程中,资料整合转换(ETL)是最花费时间、人力的,约占整个项目的60%-70%左右。
一家企业除了在不同的成长阶段所留下来历史资料,还包括使用者所产生的大量资料,及对外部所取得的资料,这些信息可能来自不同的数据库平台,或一些特定的档案格式。
而ETL就是要将各个不同的数据文件或数据库所撷取的资料,根据企业之需求及数据仓库Model的设计,转换成正确的信息,清除重复不需要的资料,转至统一的数据库中,保留在企业内以利后续使用。
由于一些历史原因,统计口径原因企业内部各个部门的数据可能各自差异,做ETL方案时,往往会卷入到该企业的数据标准,规范制订中,而对于集团企业特别是对于过去是分散管理的集团公司,还将面对规范各个企业的生产系统统计口径,以及面对各个子公司系统。
如果不采用专业的ETL工具将会使得项目在数据仓库的ETL这个过程上耗费相当的时间。
综上所述如何在按需求将各个子公司业务数据导入到平台中,就变得越来越重要。
1 ETL工具VS 手工编码实现ETL,到底是选用ETL工具,还是手工编码?对于这个话题的争论可以说永无休止。
很显然,这两种方式都有各自的优势和劣势,相信在很长一段时间里谁也无法取代谁。
我们认为有必要从以下几方面对两种方式作一个比较。
除以上列表以外,采用专业的ETL工具还具有以下特点:1.详细的纪录成功情况和过程,日志功能完善,方便你查找问题,提高效率;2.容错性能好。
比如插入10条记录,在手工编码里写一起提交,可能因为1条出错而全部回滚,而etl工具就这一条不成功;2 市面ETL工具比较Data Stage: 为开放式、可延伸的结构,其简单易见的设计工具让开发人员可以增加资料来源、目标,无须重新建立应用程序,因而减低了成本时间及资源。
Informatica:为国外知名资料整合厂商,其最大的优点在于re-usable,因为可重复使用设计好的transform不需每次重新规定,大幅缩短开发时程及人力,管理元数据的功能较同类产品比较强,为目前市面上极佳的资料转换工具。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主流ETL工具选型
ETL(extract, transform and load)产品乍看起来似乎并不起眼,单就此项技术本身而言,几乎也没什么特别深奥之处,但是在实际项目中,却常常在这个环节耗费太多的人力,而在后续的维护工作中,更是往往让人伤透脑筋。
之所以出现这种状况,恰恰与项目初期没有正确估计ETL工作、没有认真考虑其工具支撑有很大关系。
做ETL产品的选型,仍然需要从以前说的四点(即成本、人员经验、案例和技术支持)来考量。
在此,主要列举三种主流ETL产品:
Ascential公司的Datastage、
Informatica公司的Powercenter、
NCR Teradata公司的ETL Automation、
Oracel 公司的ODI、
国产udis睿智ETL、
其中,ETL Automation相对其他两种有些特别之处,放在后面评述。
旗鼓相当:Datastage与Powercenter:
就Datastage和Powercenter而言,这两者目前占据了国内市场绝大部分的份额,在成本上看水平相当,虽然市面上还有诸如Business Objects公司的Data Integrator、Cognos公司的DecisionStream,但尚属星星之火,未成燎原之势。
谈Datastage和Powercenter,如果有人说这个就是比那个好,那听者就要小心一点了。
在这种情况下有两种可能:他或者是其中一个厂商的员工,或者就是在某个产品上有很多经验而在另一产品上经验缺乏的开发者。
为什么得出这一结论?一个很简单的事实是,从网络上大家对它们的讨论和争执来看,基本上是各有千秋,都有着相当数量的成功案例和实施高手。
确实,工具是死的,人才是活的。
在两大ETL工具技术的比对上,可以从对ETL流程的支持、对元数据的支持、对数据质量的支持、维护的方便性、定制开发功能的支持等方面考虑。
一个项目中,从数据源到最终目标表,多则上百个ETL过程,少则也有十几个。
这些过程之间的依赖关系、出错控制以及恢复的流程处理,都是工具需要重点考虑。
在这一方面,Datastage的早期版本对流程就缺乏考虑,而在6版本则加入Job Sequence的特性,可以将Job、shell脚本用流程图的方式表示出来,依赖关系、串行或是并行都可以一目了然,就直
观多了。
Powercenter有Workflow的概念,也同样可以将Session串联起来,这和Datastage Sequence大同小异。
ETL的元数据包括数据源、目标数据的结构、转换规则以及过程的依赖关系等。
在这
方面,Datastage和Powercenter从功能上看可谓不分伯仲,只是后者的元数据更加开放,存放在关系数据库中,可以很容易被访问(Informatic把Metadata全部放在数据库中而Datastage是自己管理Metadata,不依赖任何数据库.)。
此外,这两个厂家又同时提供专门的元数据管理工具,Ascential有Metastage,而Informatica拥有Superglue。
你看,就不给你全部功能,变着法子从你口袋里面多掏点钱。
数据质量方面,两种产品都采用同样的策略——独立出ETL产品之外,另外有专门的数据质量管理产品。
例如和Datastage配套用的有ProfileStage和QualityStage,而Informatica最近也索性收购了原先OEM的数据质量管理产品FirstLogic。
而在它们的ETL
产品中,只是在Job或是Session前后留下接口,所谓前过程、后过程,虽然不是专为数据质量预留的接口,不过至少可以利用它外挂一些数据质量控制的模块。
在具体实现上看,Datastage通过Job实现一个ETL过程,运行时可以通过指定不同
参数运行多个实例。
Powercenter通过Mapping表示一个ETL过程,运行时为Session,绑定了具体的物理数据文件或表。
在修改维护上,这两个工具都是提供图形化界面。
这样的好处是直观、傻瓜式的;不好的地方就是改动还是比较费事(特别是批量化的修改)。
定制开发方面,两者都提供抽取、转换插件的定制,但笔者认为,Datastage的定制
开发性要比Powercenter要强那么一点点。
因为Datastage至少还内嵌一种类BASIC语言,可以写一段批处理程序来增加灵活性,而Powercenter似乎还缺乏这类机制。
另外从参数控制上,虽然两者的参数传递都是比较混乱的,但Datastage至少可以对每个job设定参数,并且可以job内部引用这个参数名;而Powercenter显得就有些偷懒,参数放在一个参数文件中,理论上的确可以灵活控制参数,但这个灵活性需要你自己更新文件中的参数值(例如日期更新)。
另外,Powercenter还不能在mapping或session中引用参数名,这一点就让人恼火。
总起来看,Datastage和Powercenter可谓旗鼓相当,在国内也都有足够的支持能力,Datastage在2005年被IBM收购之后,可以说后劲十足。
而Informatica则朝着BI全解决方案提供商方向发展,Powercenter显然还将是它的核心产品。
ODI
ODI提出了知识模块的概念,把这些场景的详细的实现步骤作为一个一个的知识模块
并使用Jython脚本语言结合数据库的SQL语句录制成一步一步的步骤忠实地记录下来,这样就形成了ODI里的100多个知识模块,基本上包含了所有普通应用所涉及到的所有场景。
更方便的是,用户既可以直接使用ODI的知识模块完成数据的获取工作,也可以直接在知识模块上面做各种定制,比如某一个业务场景可能并不需要知识模块里的某一个特定的步骤,那就可以直接把该步骤删除掉从而提供更好的性能。
当然用户也可以完全自己来开发这些知识模块。
ODI的知识模块主要分为几个大类(RKM,CKM,LKM,IKM,SKM),其中最重要的是LKM (load KM)和IKM(Integration KM)RKM。
RKM:完成从源系统和目标系统的数据结构的反向工程来形成数据模型的功能。
CKM:CKM完成数据质量检查。
LKM:LKM完成从源数据库数据加载到临时表。
IKM:IKM完成从临时表的数据加载到目标表。
SKM:SKM完成ODI和WEB服务接口的功能。
ODI的性能不是很好,Powercenter > Datastage > ODI
独树一帜:Teradata的ETL Automation
继续要说的第三种产品是Teradata的ETL Automation。
之所以拿它单独来说是因为它和前面两种产品的体系架构都不太一样。
与其说它是ETL工具,不如说是提供了一套ETL框架。
它没有将注意力放在如何处理“转换”这个环节上,而是利用Teradata数据库本身的并行处理能力,用SQL语句来做数据转换的工作,其重点是提供对ETL流程的支持,包括前后依赖、执行和监控等。
这样的设计和Datastage、Powercenter风格迥异,后两者给人的印象是具有灵活的图形化界面,开发者可以傻瓜式处理ETL工作,它们一般都拥有非常多的“转换”组件,例如聚集汇总、缓慢变化维的转换。
而对于Teradata的ETL Automation,有人说它其实应该叫做ELT,即装载是在转换之前的。
的确,如果依赖数据库的能力去处理转换,恐怕只能是ELT,因为转换只能在数据库内部进行。
从这个角度看,Automation对数据库的依赖不小,似乎是一种不灵活的设计。
也正是这个原因,考虑它的成本就不单单是ETL产品的成本了。
其实,在购买现成的工具之外,还有自己从头开发ETL程序的。
ETL工作看起来并不复杂,特别是在数据量小、没有什么转换逻辑的时候,自己开发似乎非常节省成本。
的确,主流的ETL工具价格不菲,动辄几十万;而从头开发无非就是费点人力而已,可以控制。
至于性能,人大多是相信自己的,认为自己开发出来的东西知根知底,至少这些程序可以完全由自己控制。
就目前自主开发的ETL程序而言,有人用c语言编写,有人用存储过程,还有人用各种语言混杂开发,程序之间各自独立。
这很危险,虽然能够让开发者过足编码的瘾,却根本不存在架构。
有位银行的朋友,他们几年前上的数据仓库系统,就是集成商自己用c语言专门为他们的项目开发的。
单从性能上看似乎还不赖,然而一两年下来,项目组成员风雨飘零,早已物是人非,只有那套程序还在那里;而且,按照国内目前的软件工程惯例,程序注释和文档是不全或者是不一致的,这样的程序已经对日常业务造成很大阻碍。
最近,他们已经开始考虑使用ETL工具重新改造了。
国产ETL软件—udis睿智ETL :
再来看国产的, 采用SOA架构体系,具有更好的方便性和灵活性.缺点是配置复杂,缺少对元数据的管理。