ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程。
ETL 是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
本文列出了几款开源的ETL工具,并讨论了从 ETL 转向“无 ETL”的过程,因为 ELT 正迅速成为现代数据和云环境的终极过程。
注:原文包含 11 项 ETL 工具,本文提取了其中开源的 7 项,另增加了一款使用普遍的 Kettle,如需对另外 4 项进行了解,可点击文末链接进行查看。
优秀的 ETL 工具
1、Apache Camel
主页:https://camel.apache.org
Apache Camel 是一个非常强大的基于规则的路由以及媒介引擎,该引擎提供了一个基于 POJO(Plain Ordinary Java Object,简单的Java对象) 的企业应用模式(Enterprise Integration Patterns)的实现,你可以采用其异常强大且十分易用的 API (可以说是一种 Java 的领域定义语言 Domain Specific Language)来配置其路由或者中介的规则。 通过这种领域定义语言,你可以在你的 IDE 中用简单的 Java Code 就可以写出一个类型安全并具有一定智能的规则描述文件。
说明:
POJO是Plain OrdinaryJava Object的缩写,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了很大的方便。
2、Apache Kafka
主页:https://kafka.apache.org
Apache Kafka 是一个开源的消息系统,用 Scala 和 Java 写成。
Kafka 项目为处理实时数据提供了一个统一、高通量、低延时的平台。有如下特性:
1)通过 O(1) 的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储,也能够保持长时间的稳定性能。
2)高吞吐量:即使是非常普通的硬件,kafka 也可以支持每秒数十万的消息。
3)支持通过 kafka 服务器和消费机集群来分区消息。
4)支持 Hadoop 并行数据加载。
3、Apatar
主页:http://apatar.com
Apatar 用 Java 编写,是一个开源的数据抽取、转换、 装载(ETL)项目,模块化的架构。提供可视化的 Job 设计器与映射工具,支持所有主流数据源,提供灵活的基于 GUI、服务器和嵌入式的部署选项。它具有符合 Unicode 的功能,可用于跨团队集成数据,填充数据仓库与数据市场,在连接到其他系统时在代码少量或没有代码的情况下进行维护。
4、Heka
主页:http://hekad.readthedocs.io/en/v0.10.0/
来自 Mozilla 的 Heka 是一个用来收集和整理来自多个不同源的数据的工具,
通过对数据进行收集和整理后,发送结果报告到不同的目标用于进一步分析。
5、Logstash
主页:https://www.elastic.co/products/logstash
Logstash 是一个应用程序日志、事件的传输、处理、管理和搜索的平台。
你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。
Logstash 现在是 ElasticSearch 家族成员之一。
6、Scriptella
主页:http://scriptella.org
Scriptella 是一个开源的 ETL (抽取-转换-加载)工具和一个脚本执行工具,采用 Java 开发。Scriptella 支持跨数据库的 ETL 脚本,并且可以在单个的 ETL 文件中与多个数据源运行。Scriptella 可与任何 JDBC / ODBC 兼容的驱动程序集成,并提供与非 JDBC 数据源和脚本语言的互操作性的接口。它还可以与 Java EE,Spring,JMX,JNDI 和 JavaMail 集成。
7、Talend
主页:http://www.talend.com
Talend (踏蓝) 是第一家针对的数据集成工具市场的 ETL(数据的提取 Extract、传输 Transform、载入Load)开源软件供应商。Talend 以它的技术和商业双重模式为 ETL 服务提供了一个全新的远景。它打破了传统的独有封闭服务,提供了一个针对所有规模的公司的公开的,创新的,强大的灵活的软件解决方案。最终,由于 Talend 的出现,数据整合方案不再被大公司所独享。
8、Kettle
主页:http://kettle.pentaho.org
Kettle 是一款国外开源的 etl 工具,纯 java 编写,绿色无需安装,数据抽取高效稳定(数据迁移工具)。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。