2.1 ETL
ETL ,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL 一词较常用在数据仓库,但其对象并不限于数据仓库。
ETL 是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
- Extract:处理缺省值、空值和异常值;数据类型转化;修改不合规字段;编码方式/统计口径不一致。
- Transform:单变量自身转换;多变量相互衍生。
- Load: 装载
数据抽取
抽取方式:全量或增量。
抽取手段:timestamp、触发器、备案/快照、日志
表格 CDC 四种方案比较
比较项 | timestamp | 触发器 | 快照 | 日志 |
---|---|---|---|---|
能区分插入/更新 | × | √ | √ | √ |
周期内,能检测多次更新 | × | √ | × | √ |
能检测到删除 | × | √ | √ | √ |
不具有侵入性 | × | × | × | √ |
支持实时 | × | √ | × | √ |
不依赖数据库 | √ | × | √ | × |
ETL 工具
- 商业版: Informatica、Datastage、微软 DTS、Navicat、OWB、
- 开源: Kettle 、eclipse 的 etl 插件~cloveretl
表格 ETL 商业工具列表
工具 | 厂商 | 简介 | 特性 |
---|---|---|---|
Datastage | IBM | 2005 年被 IBM 收购。 IBM 公司的商业软件,最专业的 ETL 工具,价格不菲,适合大规模的 ETL 应用。 | |
PowerCenter | Informatica | 入华时间 2005 年。全球领先的数据管理软件提供商。在如下 Gartner 魔力象限位于领导者地位:数据集成工具、数据质量工具 、元数据管理解决方案 、主数据管理解决方案 、企业级集成平台即服务(EiPaaS)。 | 专业程度如 Datastage 旗鼓相当,价格似乎比 Datastage 便宜。用于访问和集成几乎任何业务系统、任何格式的数据,它可以按任意速度在企业内交付数据,具有高性能、高可扩展性、高可用性的特点。 |
Oracle Goldengate-OGG | Oracle | 基于日志的结构化数据复制软件。可实时同步 Oracle 数据。能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。 | 与 oracle 数据库耦合太深。源端通过抽取进程提取 redo log 或 archive log 日志内容,通过 pump 进程(TCP/IP 协议)发送到目标端,最后目标端的 rep 进程接收日志、解析并应用到目标端,进而完成数据同步。 |
DTS | 微软 | ||
Data Pipeline | 一家为企业用户提供数据基础架构服务的科技公司。 | 整合了数据质量分析、质量校验、质量监控等多方面特性, 以保证数据质量的完整性、一致性、准确性及唯一性,彻底解决数据孤岛和数据定义进化的问题。 |
表格 ETL 开源工具列表
工具 | 源码 | 简介 | 特性 |
---|---|---|---|
Kettle | http://kettle.pentaho.org/ | 2006 年被 Pentaho 公司收购,改名为 Pentaho Data Integration。有商业版和开源版。。 | Java 开发,跨平台运行。,支持 单机、集群 方式部署。 |
Apatar | http://apatar.com/ | Java 编写,是一个开源的数据抽取、转换、 装载(ETL) 项目。 | 提供可视化的 Job 设计器与映射工具,支持所有主流数据源,提供灵活的基于 GUI、服务器和嵌入式的部署选项。 |
DataX | https://github.com/alibaba/DataX | 阿里巴巴集团内被广泛使用的离线数据同步工具/平台。 | 实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。 |
Sqoop | https://attic.apache.org/ | SQL-to-Hadoop 的简称。开始于 2009 年,最早是作为 Hadoop 的一个第三方模块存在,后成为 Apache 独立项目。2021.6,移入 Apache attic。 | 主要用于传统数据库与 HADOOP 之间传输数据。 |
Apache Camel | http://camel.apache.org/ | 非常强大的基于规则的路由以及媒介引擎。 | 可以在 IDE 中用简单的 Java Code 就可以写出一个类型安全并具有一定智能的规则描述文件。 |
Heka | http://hekad.readthedocs.io | 来自 Mozilla 的 Heka 是一个用来收集和整理来自多个不同源的数据的工具 | 通过对数据进行收集和整理后发送结果报告到不同的目标用于进一步分析。 |
Talend | http://www.talend.com/ | Talend (踏蓝) 是第一家针对的数据集成工具市场的 ETL 开源软件供应商。 | Talend 以它的技术和商业双重模式为 ETL 服务提供了一个全新的远景。可运行于 Hadoop 集群之间,直接生成 MapReduce 代码供 Hadoop 运行,从而可以降低部署难度和成本,加快分析速度。 |
Scriptella | http://scriptella.org/ | 开源的 ETL 工具和一个脚本执行工具,采用 Java 开发。 | 支持跨数据库的 ETL 脚本,并且可以在单个的 ETL 文件中与多个数据源运行。可以与 Java EE,Spring,JMX,JNDI 和 JavaMail 集成。 |
表格 ETL 工具功能比较
工具名称 | 简介 | 软件性质 | 数据同步方式 | 作业调度 |
---|---|---|---|---|
Informatica(美国) | 商业图形界面 | 支持增量抽取,增量抽取的处理方式,增量加载的处理方式,提供数据更新的时间点或周期 | 工作流调度,可按时间、事件、参数、指示文件等进行触发,从逻辑设计上,满足企业多任务流程设计。 | |
Beeload/BeeDI | 2004 年发布 V1.0 http://www.livbee.com 国产品牌 :专注、专业、专一 ETL 工具产品化的及技术性的原厂商,提供产品使用授权及服务 | 商业图形界面 | 全量同步时间戳增量、触发器增量差异比对、CDC 增量 提供图形界面配置 | 内置工作流调度功能,支持相关作业协同、定时及特定条件的执行。 |
Data stage | 商业图形界面 | 全量同步时间戳增量差异比对同步 | 通常使用第三方调度工具 | |
Kettle | 商业开源图形界面 | 全量同步时间戳增量差异比对同步 | 需要借助第三方调度工具控制作业执行时间 | |
Talend (法国 2005 年) | 以 Eclipse 的插件方式提供界面。 | 开源图形界面 | 全量同步增量同步方式需要 Java 自定义 | 没有内置调度,需要写 Java 自定义逻辑或使用其它调度工具 |
Apatar | Apatar 用 Java 编写,是一个开源的数据抽取、转换、 装载(ETL) 项目。 | 开源图形界面 | 全量同步增量同步方式需要代码自定义 | 没有内置调度 |
Alooma | 商业图形界面 | 全量同步时间戳增量 CDC 增量 依赖于数据库是否有对应 CDC 接口。需要复杂的配置及维护 | 通过脚本定义作业执行时间 | |
Scriptella | Scriptella 是一个开源的 ETL (抽取-转换-加载) 工具和一个脚本执行工具,采用 Java 开发。 | 开源脚本 | 完全写脚本处理同步过程 | 完全写脚本处理调度 |
Heka | 开源脚本 | 一个用来收集和整理来自多个不同源的数据的工具,通过对数据进行收集和整理后发送结果报告到不同的目标用于进一步分析。通常用于系统日志分析。需要自定义数据库同步方式。 | ||
Automation | 提供了一套 ETL 框架。它没有将注意力放在如何处理“转换”这个环节上,而是利用 Teradata 数据库本身的并行处理能力,用 SQL 语句来做数据转换的工作,其重点是提供对 ETL 流程的支持,包括前后依赖、执行和监控等其实应该叫做 ELT,即装载是在转换之前的。 | 商业脚本 | 依附于 Teradata 数据库本身的并行处理能力,用 SQL 语句来做数据转换的工作,其重点是提供对 ETL 流程的支持,包括前后依赖、执行和监控等 | Teradata 调度 |
symmetricds | 开源按数据量和服务器收费 | 开源 | 触发器方式有锁表问题 |
Kettle
kettle 官网 https://community.hitachivantara.com/docs/DOC-1009855
github 源码 https://github.com/pentaho/pentaho-kettle
Kettle 最早是一个开源的 ETL 工具,全称为[KDE ]( https://baike.baidu.com/item/KDE /5108022)Extraction, Transportation, Transformation and Loading Environment。在 2006 年,Pentaho 公司收购了 Kettle 项目,原 Kettle 项目发起人 Matt Casters 加入了 Pentaho 团队,成为 Pentaho 套件数据集成架构师 ;从此,Kettle 成为企业级数据集成及 商业智能 套件 Pentaho 的主要组成部分,Kettle 亦重命名为 Pentaho Data Integration(缩写为 PDI)。Pentaho 公司于 2015 年被[Hitachi ]( https://baike.baidu.com/item/Hitachi /1357483)Data Systems(2017 年改名为 Hitachi Vantara)收购。
Pentaho Data Integration 以 Java 开发,支持跨平台运行,其特性包括:支持 100%无编码、拖拽方式开发 ETL 数据管道;可对接包括传统数据库、文件、大数据平台、接口、流数据等数据源;支持 ETL 数据管道加入机器学习算法。 用于数据库间的数据迁移 。可以在 Linux、windows、unix 中运行。有图形界面,也有命令脚本还可以二次开发。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。
Pentaho Data Integration 分为商业版与开源版。在中国,一般人仍习惯把 Pentaho Data Integration 的开源版称为 Kettle。
企业商用版提供 专业支持服务和 软件维修服务。
表格 Kettle 开源版和商业版功能差别
软件增强功能 | 开源社区版 | 企业商用版 |
---|---|---|
Hadoop 平台集成 | 有限集成 | 厂家专用插件(CDH, HDP, EMR 等) |
Hadoop 安全性 | 不支持 | AES 加密、Kerberos、Sentry 及 Ranger 支持 |
AEL 性能提升引擎 | 不支持 | 数据集成任务下压至 Spark 引擎执行 |
数据库事务性保障 | 不支持 | 作业失败后,数据自动回滚 |
失败作业处理方式 | 从头执行 | 透过设置 Checkpoint 使作业在失败前断点重新执行 |
任务计划调度 | 不支持 | Schedule 设置任务执行时间和执行配置 |
资源库版本管理 | 不支持 | 支持作业和转换版本管理,方便协同开发 |
机器学习步骤 | 不支持 | 提供 20+常用算法,包括 Python, R 脚本执行支持。 |
作业监控分析 | 不支持 | Operations Mart 支持对作业运行数据做 BI 分析 |
流数据对接 | 有限支持 | 支持 JMS, Kafka, AMPQ, Kinesis 和 MQTT 协议 |
Pentaho 分析仪 | 不支持 | 图形化构建 Cube 进行多维分析 |
互交式报表 | 不支持 | 互交式报表支持查询、联动、过滤筛选 |
自助服务仪表盘设计 | 不支持 | 自助式构建个性化仪表盘 |
SDR 自助数据集市 | 不支持 | 透过 ETL 作业自动发布 OLAP Cube |
JDBC 驱动分发工具 | 不支持 | 提供分发工具,方便用户安装 JDBC 驱动 |
Kettle 中文名称叫水壶,该项目的主程序员 MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle 家族目前包括 4 个产品:Spoon、Pan、CHEF、Kitchen。
- SPOON(勺子) 允许你通过图形界面来设计 ETL 转换过程(Transformation)(最经常使用)。
- PAN(煎锅) 允许你批量运行由 Spoon 设计的 ETL 转换 (例如使用一个时间调度器)。Pan 是一个后台执行的程序,没有图形界面。
- CHEF(厨师) 允许你创建任务(Job)。 任务通过允许每个转换,任务,脚本等等,更有利于自动化更新数据仓库的复杂工作。任务通过允许每个转换,任务,脚本等等。任务将会被检查,看看是否正确地运行了。
- KITCHEN(厨房) 允许你批量使用由 Chef 设计的任务 (例如使用一个时间调度器)。KITCHEN 也是一个后台运行的程序。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论