跳至主要内容

将 Airbyte 连接到 ClickHouse

注意

请注意,ClickHouse 的 Airbyte 源和目标目前处于 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
  3. 在终端中看到 Airbyte 横幅后,您可以连接到 localhost:8000

    Airbyte banner
    注意

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

2. 将 ClickHouse 添加为目标

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

  1. 启动您的 ClickHouse 服务器(Airbyte 与 ClickHouse 版本 21.8.10.19 或更高版本兼容)或登录您的 ClickHouse 云帐户

    clickhouse-server start
  2. 在 Airbyte 中,选择“目标”页面并添加一个新目标

    Add a destination in Airbyte
  3. 从“目标类型”下拉列表中选择 ClickHouse,然后通过提供您的 ClickHouse 主机名和端口、数据库名称、用户名和密码来填写“设置目标”表单,并选择它是 SSL 连接(等效于 clickhouse-client 中的 --secure 标志)

    ClickHouse destination creation in Airbyte
  4. 恭喜!您现在已在 Airbyte 中将 ClickHouse 添加为目标。

注意

为了将 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. 通过命名源并提供纽约市出租车 2022 年 1 月文件(见下文)的 URL 来填写“设置源”表单。确保选择 parquet 作为文件格式、HTTPS 公共网络 作为存储提供商和 nyc_taxi_2022 作为数据集名称。

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

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

  1. 在 Airbyte 中,选择“连接”页面并添加一个新连接

    Add a connection in Airbyte
  2. 选择“使用现有源”并选择纽约市出租车数据,然后选择“使用现有目标”并选择您的 ClickHouse 实例。

  3. 通过选择复制频率(在本教程中,我们将使用 手动)并选择 nyc_taxi_2022 作为要同步的流来填写“设置连接”表单。确保选择 规范化表格数据 作为规范化。

    Connection creation in Airbyte
  4. 连接创建完成后,单击“立即同步”以触发数据加载(因为我们选择了 手动 作为复制频率)

    Sync now in Airbyte
  1. 您的数据将开始加载,您可以展开视图以查看 Airbyte 日志和进度。操作完成后,您将在日志中看到一条 已成功完成 消息

    Completed succesfully
  2. 使用您首选的 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 中!