跳到主要内容
跳到主要内容

连接 Airbyte 到 ClickHouse

Community Maintained
备注

请注意,Airbyte 的 ClickHouse 源和目标当前处于 Alpha 状态,并不适合移动大型数据集(> 1000 万行)。

Airbyte 是一个开源数据集成平台。它允许创建 ELT 数据管道,并提供超过 140 个开箱即用的连接器。本分步教程展示了如何将 Airbyte 连接到 ClickHouse 作为目标并加载示例数据集。

1. 下载并运行 Airbyte

  1. Airbyte 在 Docker 上运行,并使用 docker-compose。确保下载并安装最新版本的 Docker。

  2. 通过克隆官方 GitHub 仓库并在您喜欢的终端中运行 docker-compose up 来部署 Airbyte:

git clone https://github.com/airbytehq/airbyte.git --depth=1
cd airbyte
./run-ab-platform.sh
  1. 一旦您在终端中看到 Airbyte 横幅,您可以连接到 localhost:8000

    Airbyte banner
    备注

    或者,您可以注册并使用 Airbyte Cloud

2. 添加 ClickHouse 作为目标

在本节中,我们将展示如何将 ClickHouse 实例添加为目标。

  1. 启动您的 ClickHouse 服务器(Airbyte 与 ClickHouse 版本 21.8.10.19 或更高版本兼容)或登录到您的 ClickHouse 云账户:
clickhouse-server start
  1. 在 Airbyte 中,选择“目标”页面并添加新目标:

    Add a destination in Airbyte
  2. 从“目标类型”下拉列表中选择 ClickHouse,填写“设置目标”表单,提供您的 ClickHouse 主机名和端口、数据库名称、用户名和密码,并选择是否为 SSL 连接(相当于 clickhouse-client 中的 --secure 标志):

    ClickHouse destination creation in Airbyte
  3. 恭喜!您已成功将 ClickHouse 添加为 Airbyte 的目标。

备注

为了使用 ClickHouse 作为目标,您将使用的用户需要具有创建数据库、表和插入行的权限。我们建议为 Airbyte 创建一个专用用户(例如:my_airbyte_user),并赋予以下权限:

CREATE USER 'my_airbyte_user'@'%' IDENTIFIED BY 'your_password_here';

GRANT CREATE ON * TO my_airbyte_user;

3. 添加数据集作为源

我们将使用的示例数据集是 纽约市出租车数据(在 GitHub 上)。在本教程中,我们将使用与 2022 年 1 月对应的这个数据集的一个子集。

  1. 在 Airbyte 中,选择“源”页面并添加类型为文件的新源。

    Add a source in Airbyte
  2. 填写“设置源”表单,命名源并提供 NYC 出租车 2022 年 1 月文件的 URL(见下文)。确保选择 parquet 作为文件格式,HTTPS Public Web 作为存储提供者,以及 nyc_taxi_2022 作为数据集名称。

https://d37ci6vzurychx.cloudfront.net/trip-data/yellow_tripdata_2022-01.parquet
ClickHouse source creation in Airbyte
  1. 恭喜!您已成功在 Airbyte 中添加了源文件。

4. 创建连接并将数据集加载到 ClickHouse

  1. 在 Airbyte 中,选择“连接”页面并添加新的连接。
Add a connection in Airbyte
  1. 选择“使用现有源”,并选择纽约市出租车数据,接着选择“使用现有目标”,并选择您的 ClickHouse 实例。

  2. 填写“设置连接”表单,选择复制频率(我们将在本教程中使用 manual)并选择 nyc_taxi_2022 作为您想要同步的流。确保您选择 Normalized Tabular Data 作为规范化。

Connection creation in Airbyte
  1. 现在连接已创建,点击“立即同步”以触发数据加载(因为我们选择了 Manual 作为复制频率)。
Sync now in Airbyte
  1. 您的数据将开始加载,您可以展开视图以查看 Airbyte 日志和进度。操作完成后,您将在日志中看到“成功完成”的消息:
Completed successfully
  1. 使用您首选的 SQL 客户端连接到您的 ClickHouse 实例,并检查结果表:
SELECT *
FROM nyc_taxi_2022
LIMIT 10

响应应该如下所示:

Query id: 4f79c106-fe49-4145-8eba-15e1cb36d325

┌─extra─┬─mta_tax─┬─VendorID─┬─RatecodeID─┬─tip_amount─┬─airport_fee─┬─fare_amount─┬─DOLocationID─┬─PULocationID─┬─payment_type─┬─tolls_amount─┬─total_amount─┬─trip_distance─┬─passenger_count─┬─store_and_fwd_flag─┬─congestion_surcharge─┬─tpep_pickup_datetime─┬─improvement_surcharge─┬─tpep_dropoff_datetime─┬─_airbyte_ab_id───────────────────────┬─────_airbyte_emitted_at─┬─_airbyte_normalized_at─┬─_airbyte_nyc_taxi_2022_hashid────┐
│     0 │     0.5 │        2 │          1 │       2.03 │           0 │          17 │           41 │          162 │            1 │            0 │        22.33 │          4.25 │               3 │ N                  │                  2.5 │ 2022-01-24T16:02:27  │                   0.3 │ 2022-01-24T16:22:23   │ 000022a5-3f14-4217-9938-5657f9041c8a │ 2022-07-19 04:35:31.000 │    2022-07-19 04:39:20 │ 91F83E2A3AF3CA79E27BD5019FA7EC94 │
│     3 │     0.5 │        1 │          1 │       1.75 │           0 │           5 │          186 │          246 │            1 │            0 │        10.55 │           0.9 │               1 │ N                  │                  2.5 │ 2022-01-22T23:23:05  │                   0.3 │ 2022-01-22T23:27:03   │ 000036b6-1c6a-493b-b585-4713e433b9cd │ 2022-07-19 04:34:53.000 │    2022-07-19 04:39:20 │ 5522F328014A7234E23F9FC5FA78FA66 │
│     0 │     0.5 │        2 │          1 │       7.62 │        1.25 │          27 │          238 │           70 │            1 │         6.55 │        45.72 │          9.16 │               1 │ N                  │                  2.5 │ 2022-01-22T19:20:37  │                   0.3 │ 2022-01-22T19:40:51   │ 00003c6d-78ad-4288-a79d-00a62d3ca3c5 │ 2022-07-19 04:34:46.000 │    2022-07-19 04:39:20 │ 449743975782E613109CEE448AFA0AB3 │
│   0.5 │     0.5 │        2 │          1 │          0 │           0 │         9.5 │          234 │          249 │            1 │            0 │         13.3 │           1.5 │               1 │ N                  │                  2.5 │ 2022-01-22T20:13:39  │                   0.3 │ 2022-01-22T20:26:40   │ 000042f6-6f61-498b-85b9-989eaf8b264b │ 2022-07-19 04:34:47.000 │    2022-07-19 04:39:20 │ 01771AF57922D1279096E5FFE1BD104A │
│     0 │       0 │        2 │          5 │          5 │           0 │          60 │          265 │           90 │            1 │            0 │         65.3 │          5.59 │               1 │ N                  │                    0 │ 2022-01-25T09:28:36  │                   0.3 │ 2022-01-25T09:47:16   │ 00004c25-53a4-4cd4-b012-a34dbc128aeb │ 2022-07-19 04:35:46.000 │    2022-07-19 04:39:20 │ CDA4831B683D10A7770EB492CC772029 │
│     0 │     0.5 │        2 │          1 │          0 │           0 │        11.5 │           68 │          170 │            2 │            0 │         14.8 │           2.2 │               1 │ N                  │                  2.5 │ 2022-01-25T13:19:26  │                   0.3 │ 2022-01-25T13:36:19   │ 00005c75-c3c8-440c-a8e8-b1bd2b7b7425 │ 2022-07-19 04:35:52.000 │    2022-07-19 04:39:20 │ 24D75D8AADD488840D78EA658EBDFB41 │
│   2.5 │     0.5 │        1 │          1 │       0.88 │           0 │         5.5 │           79 │          137 │            1 │            0 │         9.68 │           1.1 │               1 │ N                  │                  2.5 │ 2022-01-22T15:45:09  │                   0.3 │ 2022-01-22T15:50:16   │ 0000acc3-e64f-4b58-8e15-dc47ff1685f3 │ 2022-07-19 04:34:37.000 │    2022-07-19 04:39:20 │ 2BB5B8E849A438E08F7FCF789E7D7E65 │
│  1.75 │     0.5 │        1 │          1 │        7.5 │        1.25 │        27.5 │           17 │          138 │            1 │            0 │        37.55 │             9 │               1 │ N                  │                    0 │ 2022-01-30T21:58:19  │                   0.3 │ 2022-01-30T22:19:30   │ 0000b339-b44b-40b0-99f8-ebbf2092cc5b │ 2022-07-19 04:38:10.000 │    2022-07-19 04:39:20 │ DCCE79199EF9217CD769EFD5271302FE │
│   0.5 │     0.5 │        2 │          1 │          0 │           0 │          13 │           79 │          140 │            2 │            0 │         16.8 │          3.19 │               1 │ N                  │                  2.5 │ 2022-01-26T20:43:14  │                   0.3 │ 2022-01-26T20:58:08   │ 0000caa8-d46a-4682-bd25-38b2b0b9300b │ 2022-07-19 04:36:36.000 │    2022-07-19 04:39:20 │ F502BE51809AF36582561B2D037B4DDC │
│     0 │     0.5 │        2 │          1 │       1.76 │           0 │         5.5 │          141 │          237 │            1 │            0 │        10.56 │          0.72 │               2 │ N                  │                  2.5 │ 2022-01-27T15:19:54  │                   0.3 │ 2022-01-27T15:26:23   │ 0000cd63-c71f-4eb9-9c27-09f402fddc76 │ 2022-07-19 04:36:55.000 │    2022-07-19 04:39:20 │ 8612CDB63E13D70C1D8B34351A7CA00D │
└───────┴─────────┴──────────┴────────────┴────────────┴─────────────┴─────────────┴──────────────┴──────────────┴──────────────┴──────────────┴──────────────┴───────────────┴─────────────────┴────────────────────┴──────────────────────┴──────────────────────┴───────────────────────┴───────────────────────┴──────────────────────────────────────┴─────────────────────────┴────────────────────────┴──────────────────────────────────┘
SELECT count(*)
FROM nyc_taxi_2022

响应为:

Query id: a9172d39-50f7-421e-8330-296de0baa67e

┌─count()─┐
│ 2392428 │
└─────────┘
  1. 注意到 Airbyte 自动推断了数据类型,并向目标表中添加了 4 列。这些列由 Airbyte 用于管理复制逻辑和记录操作。有关更多详细信息,请参阅 Airbyte 官方文档
`_airbyte_ab_id` String,
`_airbyte_emitted_at` DateTime64(3, 'GMT'),
`_airbyte_normalized_at` DateTime,
`_airbyte_nyc_taxi_072021_hashid` String

现在数据集已加载到您的 ClickHouse 实例上,您可以创建一个新表并使用更适合的 ClickHouse 数据类型(更多细节)。

  1. 恭喜 - 您已成功使用 Airbyte 将纽约市出租车数据加载到 ClickHouse 中!