一、ETL工具概述
ETL,全称 Extract-Transform-Load,它是将大量的原始数据经过提取(extract)、转换(transform)、加载(load)到目标存储数据仓库的过程。
理解ETL
ETL 是企业数据应用过程中的一个数据流(pipeline)的控制技术,把原始的数据经过一定的处理,放入数据仓库里。
提取是将关系型数据库和非关系型数据库,以及文件图档数据,第三方接口数据,应用的webhook数据等多种多样的原格式数据抽象出来,形成统一的数据格式先放入缓存区,等待下一步转换操作。
转换是根据我们的商业需要,用一些规则、方法进行数据处理。一般常见的转换操作有:
- 筛选:筛选部分数据,或者部分字段,提取一部分有用的数据
- 清理:缺失值填充、默认值设定、枚举映射等,如将一些编码转为可识别的符号,比如省份代码 sh 转为「上海」
- 合并:将多个属性合并在一起
- 格式转换:,如原数据是一下个时间戳(timestamp),我们为了方便后续分析转换为时间格式,指定时区
- 拆分:将单个属性值拆分为多个属性值,如原为一个邮编,拆分解析成省份、城市等多个字段
- 排序:按期望的数据顺序进行排列
- 计算:如原数据为年龄,用当前年份减去年龄同,取得出生年份
数据加载是按照预先定义好的数据仓库模型,将数据加载到数据仓库中去,是构建数据仓库最重要的一步。常用的数据加载方式有:
- 全量加载:全表删除后再进行数据加载的方式。
- 增量加载:目标表仅更新源表变化的数据。
二、主流ETL工具
当前业界主流的工具有datax、airbyte、kettle等。其中kettle的图形化依赖GNOME桌面等。因此主要从datax、airbyte、kettle三个主流工具从功能特点进行介绍。
1、DataX
DataX是阿里开源的一个异构数据源离线同步工具。作为一个服务于大数据的ETL工具(其实可以算作是ELT工具),除了提供数据快照搬迁功能之外,还提供了丰富数据转换的功能,能提供稳定高效的数据同步功能。
dataX的简单流程
1)、编写数据同步操作的json文件
2)、命令行模式执行调用json进行数据同步
优点:
(1)支持多个数据源和数据目标,且接入方便。
(2)支持高速数据传输,适用于大规模数据处理场景。
(3)定制化程度高,支持用户自定义开发。
缺点:
DataX但DataX是以脚本的方式执行任务的,需要完全吃透源码才可以调用,学习成本高。
缺少用户友好的界面,需要编写脚本进行配置 ,可视化监控和数据追踪能力不够完善。运维成本相对高。
2、airbyte
airbyte是一款最新开源的数据集成软件,它将应用程序、API和数据库中的数据同步到数据仓库、数据湖和其他目的地,支持200个Source类型连接器,100 个Destination类型的连接器。Airbyte 最主要的产品还是 Extract 数据抽取和 Load 数据加载产品。
Airbyte的简单流程:
1)从Airbyte支持的“Sources”中选择想要连接的数据源,并配置相应信息
2)从Airbyte支持的“Destinations”中选择数据写入的目标,并配置相应信息
3)有了数据源和目标的信息,我们就可以建立一条连接(connection),并设置一个同步周期来同步数据了
Airbyte 分为免费版、云版本和企业版。
开源版本可用作自助服务、免费解决方案。它可以访问无限连接器、复制、监控和通过社区为用户提供支持。云版本除了提供开源的所有功能之外,还提供其平台的云托管服务,并按积分收费。其信用消耗与基础设施计算时间相关。它带有云数据托管、数据管理、多个工作区等。
云版本提供 14 天的免费试用期,之后按每个积分 2.50 美元的价格按月收费。
企业版是针对处理大数据量需求的用户,依据客户用例收费。Airbyte 不对失败的客户用例收费。Airbyte 希望通过开源模式和付费贡献者计划,解决行业对长尾连接器的需求。从这方面来看,闭源产品大多是无法满足的。此外,他们还希望通过开源加快业界使用他们的连接器,从而提高产品可靠性。
3、Kettle
Kettle是一款开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
Kettle的两种任务类型:
Kettle的特点:
以下为kettle的命令行方式数据转换操作截图:
kettle优点:
(1)提供了直观的图形化用户界面,用户可以通过拖放和连接转换步骤来构建数据集成流程,这种可视化的开发方式使得非技术人员也能够轻松上手,并加快了开发效率。
(2)Kettle提供了丰富的转换步骤和功能,使用户能够对数据进行清洗、过滤、转换和合并等操作,它支持各种数据处理技术,包括字符串操作、日期处理、聚合计算、条件判断等,以满足复杂的数据转换需求。
缺点:
(1)学习上手存在一定难度,对于新手来说,Kettle可能需要一些时间来理解其概念和操作方式。尤其是在处理复杂的数据转换逻辑时,需要具备一定的数据处理和编程知识。
(2)文档支持有限,相比其他一些国产的ETL工具,Kettle在国内的用户数量虽然很多,但是中文文档和技术支持相对有限。这可能导致在遇到问题时需要更多的自学和研究。
(3)不支持CDC实时数据采集功能,只能依赖加快任务的调度频率如1分钟来实现实时数据传输,如果数据量比较庞大的话,对于生产系统的话会造成很大的压力。
三、ETL竞品分析
Airbyte和DataX都是用于数据同步和ETL(Extract, Transform, Load)的工具,但在一些方面存在一些差异。
1、可视化界面:Airbyte提供了一个基于Web的用户界面,可以通过可视化方式配置和管理数据同步任务,无需编写复杂的代码。而DataX主要是通过配置文件进行任务配置,然后通过python脚本调用,需要一定的技术能力和经验。
2、社区和生态系统:DataX是由阿里巴巴集团开发和维护的项目,有较为活跃的开发者社区和丰富的插件生态系统,可以满足不同的数据同步需求。Airbyte是一个较新的开源项目,虽然社区和生态系统在不断发展壮大,但可能相对DataX来说生态还要有限一些,且网上可供参考的资料偏少。
3、扩展性和定制化:DataX具有较高的扩展性,可以通过编写插件来支持更多的数据源和数据目标。同时,DataX还提供了丰富的Transformer插件,用于数据转换和清洗操作。Airbyte也提供了类似的扩展性和定制化能力,可以通过开发自定义连接器和转换器来满足特定的需求。
四、结论建议
Airbyte是一个较新的开源项目,虽然社区和生态系统在不断发展壮大,网络上资料比较少,建议测试环境可以使用,dataX和kettle网络上资料比较多。侧重于大数据量的抽取同步场景使用dataX, 侧重于数据转换的场景使用kettle。