什么是ETL
ETL是 Extract,Transform,Load 的是缩写,分别代表数据的抽取,转换和装载,也就是平时很繁琐,但却是数据分析的基础清洗工作。数据抽取指的是将数据从原始数据库中读取出来,原始的数据库既可以是关系型数据库,如 MySQL,PostgreSQL 等,又可以是非关系型数据库(NoSQL),如 MongoDB,Cassandra 等;数据转换是指根据后续的分析需求预先制定的规则对抽取的数据进行计算和转换,最终将异构的数据统一起来;数据装载一般是指将转换好的数据导入到数据仓库中,如 Hive,Amazon Redshift 等大数据仓库工具。总的来说,ETL 任务需要考虑以下四个方面:
- 数据结构设计
- 数据质量
- 数据传输速度
- 数据安全
而一款优秀的 ETL 可视化工具需要考虑有以下这些方面:
- 对数据变更的支持
- 详细的日志
- 支持各种数据库
- 容错机制
- 通知支持
- 低延迟
- 可扩展性
- 准确性
为何选择可视化工具,而不是自定义脚本
- 一致性:脚本难以维护,而且还要花费时间对生产环境进行部署,整体效率不高;
- 可加快开发循环:可视化,还有实时检查的功能;
- 用户友好:对初级用户来说入门容易,操作简单;
桌面 ETL 工具
Kettle 简介
Kettle (Pentaho Data Integration)是一款领先的开源ETL应用系统。功能包括数据迁移,数据的导出导入,数据的清洗整合。Kettle 对初级使用者十分友好。每一个数据整理的步骤都有可视化的界面,可拖放式的流程设计方式,即不需要书写代码就能完成数据清洗的工作。此外,Kettle 还能支持多种数据库接口,有 MySQL, Hadoop Hive, Impala 等连接类型。
Kettle数据清洗系统主要由 Spoon,Pan,Kitchen 和 Carte 四个部件组成。其中 Spoon 是一个完整的数据转换图形界面,作业(Jobs)和数据转换(transformations)又是 Spoon 的基础,多个数据转换的连接在一起就能构成一个作业。利用 Pan 可以批量运行由 Spoon 设计的数据转换流程,但没有图形界面,利用 Kitchen 可以批量执行含有多个数据转换流程的作业。整个数据转移的作业的调度和执行可以通过 Carte 页面进行观察和监控。
所有创建的作业都会以 xml 文件保存下来,方便数据转换的重现。如果执行作业过程中遇到到异常情况,待异常处理完毕后,作业将在中断处继续执行。显然在 Spoon 界面上执行作业效率会高一些(借助 Spoon 的可拖放的流程设计模式以及内置调度器),不过也可以通过 Pan 和 Kitchen 来执行数据转换和作业,并通过 cron 来进行任务的调度。
Talend 简介
Talend Open Studio 是一套成熟的开源数据集成产品,主要用于整合,清洗,分离数据。它具有丰富数据整合功能,包括基于 Eclipse 的图形化开发环境,可拖放的作业以及储存完备的元数据,方便数据的再利用。除此之外,还有一系列的高级 ETL 功能,如字符串处理,自动查找和异常处理。
Talend Open Studio 的数据清洗工作是以 projects,jobs 和 components 为基础的,将 components 连接在一起形成 jobs,多个 jobs 构成 project。但是界面中有大量的设置项需要调整,而且一个 job 又有多个 components 选项,对用户不太友好。
任务可以通过界面执行(效率较低),也可以通过命令行执行,所有任务将会由 Talend Scheduler 进行调度。若调整任务的内容,或者任务之间的依赖关系,只需在界面上手动调整即可,所以调整将会同步更新到代码当中,定制起来十分灵活。而对于异常的处理,Talend 会终止正在进行任务,等待修复,然后从头开始执行任务。比起 Kettle,Talend 在大数据处理,定制的灵活性更佳。
CloverETL 简介
CloverETL 是一款基于 Java 的跨平台开源 ETL 数据管理软件。其中开源部分是 CloverETL Engine,这也是 CloverETL 的大脑部分。但 Desinger,Server 以及 Cluster 都是付费使用的。CloverETL 套件既支持单机版,也有基于命令行操作方式,甚至可以作为 Java 库被其他应用调用。类似 Kettle 和 Talend,CloverETL 也可以图形化来展示数据处理流程晨,用箭头表示数据从一个任务转移到另一个任务。
CloverETL 由以下三个部分组成:
- CloverETL Engine 是数据清洗的核心部分
- CLoverETL Designer 是设计数据清洗流程以及执行转换任务的可视化工具
- CloverETL Server 是工作流,任务调度和监控,用户管理和实时 ETL 的企业级管理平台
桌面 ETL 应用的优缺点比较
工具 | 优点 | 缺点 |
---|---|---|
IBM Infosphere DataStage | 以灵活性和丰富功能著称; | 1.学习难度较大;2.需具备较大内存和较强的能力;3.实现起来比较浪费时间 |
InformaticaPowerCenter | 1.容易学习;2.可跟踪执行记录;3.实时清洗 | 技术的价值被削弱 |
Oracle Data Integrator | 与 Oracle 数据仓库高度集成 | 1.一般用作批量处理;2.只有解决 ETL 的功能 |
Kettle (open source) | 1.直观的可视化界面;2.完善的日志记录功能;3.多线程执行,跨平台 | 1.定制性较差;2.工具更新较缓慢 |
Talend (open source) | 1.直观的可视化界面;2.灵活定制;3.跨平台 | 1.任务失败只能重头执行;2.设置过于复杂,对用户不太友好 |
CloverETL (open source) | 1.直观的可视化界面;2.跨平台 | 只有 Engine 开源,其他部件收费 |
Web ETL 工具
DOMO
相比桌面版本的 ETL 工具,基于浏览器的 ETL 工具在 ETL 方面的工具较为弱化,这些工具大多数是数据分析和呈现的平台,也可以称为商业决策的工具,同时也会搭配着一些简易的 ETL 功能。DOMO Magic ETL 就是一个很好的例子。Magic ETL 能够帮助你完成数据清洗,整合和转换的工作,而不需要熟悉SQL的语法。DOMO 支持多种数据库接口,也支持本地上传的文件,同时拥有清晰的可视化界面和可拖放的部件来完成数据的整合。将整个数据处理流程保存下来之后,只要更新数据源,就能获得新的数据集。
完成 ETL 工作之后,借助 DOMO Dashboard 可以构建多种图表,作分析之用,还具备在线讨论协作的功能。当然,ETL,数据分析计算和图表的呈现都是通过云服务器处理的,这肯定能减少自己服务器的负载,但在某些情况下可能意味着较慢的速度。
主要特征:
- 直接连接到任何数据源,简化分析流程
- 只需拖放任务和一些简单的设置就能完成整合,清洗和转换数据工作
- 便捷和轻松将数据进行共享和可视化
Panoply & Stitch (Singer.io)
Panoply.io 是一款基于 web 的数据管理云平台,致力于为分析师,数据科学家简化数据预处理的流程。其数据仓库和分析平台是给予 Amazon Redshift、Elastic Search 以及 Hadoop 搭建的,号称能在10分钟之内将原始数据转化为复杂的分析和数据洞察。
Panoply.io 支持的数据来源包括关系型数据,NoSQL 和本地文件。利用 Stitch 这个数据抽取工具,并与 Panoply.io 账号关联起来,完成从数据抽取到数据展示的分析流程。经试用发现,其 EL 工作是由 Stitch 工具完成,而 T 的功能则由 Panoply.io 的 SQL 查询编辑器实现,并且能够记录查询语句,整体上跟 HUE 的功能类似。比起 DOMO, 界面比较简陋,功能也较单一。
不同于 DOMO 的是它能够将数据库与一些热门的 BI 可视化工具, 如 Tableau,Looker 和 re:dash 等连接起来,方便数据分析师选择自己喜爱的工具进行分析和展示。
Matillion ETL for Amazon Redshift
Matillion ETL 搭建在 Amazon Redshift 的基于 web 的 ETL/ELT 工具。
亮点在于:
- 利用 Redshift 计算能力进行数据转换,达到实时反馈的水平
- 基于浏览器的界面,还有协作,版本控制,可视化功能
- 快速安装
Web ETL 应用的优缺点比较
工具 | 优点 | 缺点 |
---|---|---|
DOMO | 1.无学习难度,不需要熟悉 SQL 语法;2.图表制作;3.在线讨论写作 | ETL 功能有限 |
Panoly.io & Stitch | 1.无学习难度;2.支持多个 BI 平台 | 1.ETL/ELT 功能太弱;2.难以重现 ETL 过程 |
Matillion | 1.专业 ETL/ELT 平台;2.计算能力强,实时反馈 | 依赖 Redshift |
参考链接:
- A Survey of ETL Tools
- OpenSource ETL tools
- ETL Tools - Top 10 ETL Tools Reviews
- ETL Tools
- Open Source DI Tool Comparison
- Domo vs. Tableau
- Why our ETL tool doesn’t do transformations
- Panoply.io documentation
- ETL vs. ELT
- Matillion Overview
注:本报告被技术主管认为毫无价值,发表于此,自我反省。