现代数据技术栈之数据集成工具Airbyte

Airbyte介绍

Airbyte是一个近几年诞生的,且开源的,适合现代数据技术栈的ELT工具。开源Airbyte工具的背后是一家初创公司,由于拿到了融资,所以可以全身心的投入到产品的开发中去。

目前在ELT领域,已经有不少成功的公司了,比如Fivetran,Flydata等,但是他们都只专注于SaaS服务,不搞开源和私有部署,所以不适合在国内的环境里使用。Airbyte则是既做SaaS服务,又搞开源和私有部署,算是另辟蹊径,用开源的方式获得了一大批簇拥者,资本市场也很看好这个公司。关于Airbyte公司的更多介绍,可以参考老阎的文章《不让Fivetran独美,Airbyte新晋独角兽》。

从ETL到ELT

在现代数据技术栈中,都是基于云数据仓库来构建企业数据平台的,那么需要有一个工具可以把各种来源的数据通过(导入)到数据仓库中,才能用来做数据分析和数据建模。以前由于数据仓库的存储比较昂贵,会采用ETL的方式导入数据,也就是说在导入数据仓库前,先由ETL工具对数据做初步的处理后再导入数据仓库。而随着数仓技术的发展,计算和存储分离后,存储变得比较便宜,为了提升数据使用的灵活性,更早的可以在数仓里查询到同步过来的数据,往往会采用ELT的方式来处理数据,数据集成工具负责EL,T则由数据仓库来完成。Airbyte扮演的是EL的角色,另外dbt则扮演的是T的角色。

Airbyte支持的连接器

截止目前,Airbyte支持的连接器已经有100多种,连接器又分为数据源和数据目标。常见的数据源有MySQL,Oracle,SQL Server等关系型DB,还有Mongo DB等NoSQL数据库,另外还有一些是国内不适用的SaaS服务API。数据目标则支持AWS Redshift、Snowflake,Clickhouse等数据仓库。

国内中小企业常用的场景就是:

1. 源MySQL,目标Redshift

2. 源MySQL,目标Clickhouse

3. 源SQL Server,目标Redshift

等等。

我们以第一个场景为例,演示下数据集成的流程。

Airbyte的安装

Airbyte开源版本目前只支持Docker部署或者K8S部署,我自己是使用的Docker部署,找一台虚拟机,内存8G,硬盘30G以上就可以。在Linux虚拟机上安装好Docker服务和Docker Compose工具。然后在github的官方仓库下载最新代码,目前airbyte还没有stable的版本,所以使用最新代码可能会遇到问题,也可以选择一个tag来部署。以下测试使用的是0.39.34-alpha版本。

代码下载好以后,使用docker-compose up -d命令来启动服务。

等一会后可以访问http://<服务器ip>:8000来访问airbyte的web界面。

如果不能访问该地址,可以使用docker-compose logs --tail 100命令来查看日志里是否有报错。

第一步,先创建一个新的数据源


现代数据技术栈之数据集成工具Airbyte

创建数据源

选择MySQL:

现代数据技术栈之数据集成工具Airbyte

依次输入数据库地址和用户名密码:


现代数据技术栈之数据集成工具Airbyte

禁用SSL连接(如果是生产环境,建议打开)。复制方式有标准和CDC,标准代表使用SQL按照增量的时间字段查询出变化的记录,缺点是记录删除的操作无法同步。CDC会使用binlog来做增量同步,可以同步删除操作,缺点是需要数据库开通相关的用户权限,并配置好binlog格式。

现代数据技术栈之数据集成工具Airbyte

接下来,创建数据目标:

现代数据技术栈之数据集成工具Airbyte

下拉列表里选择Redshift,然后配置Redshift的连接信息:

现代数据技术栈之数据集成工具Airbyte

上传方式选择Standard标准或者S3 Staging。标准适合小表做测试使用会有性能瓶颈,生产环境和大表需要选择S3 Staging(S3暂存),这时候需要提供AWS的访问密钥,文件加密可以先关闭。

现代数据技术栈之数据集成工具Airbyte

最后,创建一个连接:

现代数据技术栈之数据集成工具Airbyte

选择刚刚创建的MySQL数据源,再选择Redshift作为数据目标。配置同步频率,从每5分钟到每24小时,选择一档。

现代数据技术栈之数据集成工具Airbyte

选择目标库的Namespace,对于redshift来说也就是schema的命名方式,可以完全镜像源数据库,也可以自定义schema的名字。

现代数据技术栈之数据集成工具Airbyte

接下来选择需要同步的表,同步方式可以选择Full Refresh – Overwrite(适用于小表)或者Incremental-Deduped + history(适用于大表)。

现代数据技术栈之数据集成工具Airbyte

都配置完后就可以开始同步了,先启动这个连接,然后点击Sync now按钮,同步日志会显示在下方。

现代数据技术栈之数据集成工具Airbyte

已知的Redshift数据目标的小问题

相比其他数据集成工具,在使用中发现如下差异:

1. 源表中日期和时间类型的字段类型都被转成varchar类型存储在redshift表中,原因是因为airbyte会将记录转换成json,然后再通过解析json字段来获取字段值。Json格式是没法区分日期和字符类型的。

2. 除了被同步的表外,还会生成2张中间表,影响表的查找,可能会带来歧义。中间表的名字为_airbyte_raw_

_scd。

3. 对源表结构变化能否自动感知并自动修改目标表的结构,如果结构变化无法迁移,是否可以通过重新同步解决,还需要进一步测试。

总结

Airbyte是一个功能完整的数据集成工具,可以很好的融入现代数据技术栈的生态中。由于其连接器众多,部分常用的连接器比如MySQL源还处于Alpha版本中,稳定性还需要提升。我会持续跟踪Airbyte的发展,相信其可以成为开源现代数据栈中的主力集成工具。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章