前言 ETL工具


1 什么是ETL

ETL全称为Extract Transform Load,是一种数据仓库技术,其中三个英文单词分别对应三个数据处理操作的中文名称:抽取(Extract)、转换(Transform)以及加载(Load)。因此,ETL的实际含义是将数据经过抽取、清洗转换之后加载到数据仓库的过程。

一般而言我们需要借助一些工具来实现常见的ETL技术。

2 ETL工具有哪些

1)ETL实现方法

实现ETL整个过程的方式有很多种,目前常用的是三种:

  • 通过SQL语句来实现。优点是数据处理十分灵活,缺点是代码复杂,对技术要求较高。
  • 借助专门的ETL工具。优点是功能封装使得ETL工具强大易用,缺点是缺少灵活性。
  • SQL+ETL工具相结合。

2)主流ETL工具

  • Kettle

Kettle是目前最为流行的一款开源etl工具之一,被Pentaho公司收购后正式更名为Pentaho Data Integration,但在中国,最为业内大众所熟知的还是“Kettle”。

Pentaho Data Integration为纯Java开发,支持跨平台运行,其特性包括:

    • 支持100%无编码、拖拽方式开发ETL数据管道;
    • 可对接包括传统数据库、文件、大数据平台、接口、流数据等数据源;
    • 支持ETL数据管道加入机器学习算法。
  • Talend

Talend是第一家针对数据集成工具市场的ETL开源软件供应商。Talend以它的技术和商业双重模式为ETL服务提供了一个全新的远景。

这款工具简化了数据处理流程,降低了开发门槛,用户不需要掌握专业的ETL知识,仅仅通过web界面和简单的组件拖拽就可实现数据处理。

  • DataX

DataX是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入。

  • DataStage

DataStage是IBM旗下的一款十分强大的ETL工具。

DataStage支持对数据结构从简单到高度复杂的大量数据进行收集、变换以及分发操作,且管理到达的数据以及定期或按调度接收的数据。这款软件能够通过对大量数据进行高性能处理,解决企业级别的大规模业务问题。通过利用多处理器硬件平台的并行处理能力,DataStage还可以扩展为满足日益增长的数据量的需求、严格的实时需求和不断缩短的批处理时间窗口的需求。

DataStage被称为最专业的ETL工具,价格不菲。

  • ODI

ODI即是Oracle的数据集成工具。Oracle ODI是使用E-LT的理念(Extract、Load & Transform,即抽取、装载、转换)设计出来的数据抽取/数据转换工具。

ODI最大的特点是提出了知识模块(Knowledge Module)的概念。它把一些场景的详细实现步骤作为一个一个的知识模块记录下来。用户既可以直接使用ODI的知识模块完成数据的获取工作,也可以直接在知识模块上面做各种个性化定制。但这款软件有一定的局限性:与Oracle数据库耦合太深。

3 其他ETL的方式

除了使用传统的ETL之外,您还可以选择使用流行的大数据引擎来进行数据的处理操作:

  • Mapreduce

使用Mapreduce进行数据处理需要借助Java、Python等语言进行开发调试,没有上述提到的ETL工具的可视化操作界面来的那么方便。

在性能优化方面,常见的有在做小表跟大表关联的时候,可以先把小表放到缓存中(通过调用Mapreduce的api),另外可以通过重写Combine跟Partition的接口实现,压缩从Map到reduce中间数据处理量达到提高数据处理性能。

  • Hive

早期的阿里的云梯1就是充分利用Hive的特性来进行数据处理。

Hive采用sql的方式底层基于Hadoop的Mapreduce计算框架进行数据处理,所以它的优化方案很多,常见的场景比如数据倾斜,当多表关联其中一个表比较小,可以采用mapjoin,或者设置set hive.groupby.skewindata=true等,当碰到数据量比较大的时候,可以考虑利用分桶,分区(分为静态分区,动态分区)进行数据重新组织存储。

  • Spark

Spark是基于内存计算的准Mapreduce,在离线数据处理中一般会使用Spark sql进行数据清洗。在优化方面主要涉及配置每台集群每台机器运行task的进程个数,内存使用大小,cpu使用个数等。spark sql跟上面所说的hive sql差不多,只不过spark sql更加倾向于内存处理。但是他不具有较强的模板话,如果修改里面逻辑要重新编译调试运行,比较适合改动比较小的业务场景,比如数据仓库模型中ods,dwd层的数据处理。因为这两层都是宽表级别的粗处理,目的很简单旨在数据最优存储支撑上层ads层报表开发。

每种ETL方式都有各自的使用场景,我们在实际的工作中,需要根据不同的特定场景来选择数据处理方式~在树懒学堂,我们提供了三款目前最受欢迎的开源ETL工具供您学习,分别是DataX、Talend以及Kettle,赶紧猛戳链接开始学习吧!