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

将 ClickHouse 连接到外部数据源的 JDBC

备注

使用 JDBC 需要 ClickHouse JDBC 桥,因此您需要在本地机器上使用 clickhouse-local 将数据从您的数据库流式传输到 ClickHouse Cloud。请访问文档中 迁移 部分的 使用 clickhouse-local 页面以获取详细信息。

概述: ClickHouse JDBC 桥 结合 jdbc 表函数JDBC 表引擎 使 ClickHouse 能够访问任何外部数据源的数据,只要该数据源可用 JDBC 驱动程序

当没有可用的原生内置 集成引擎、表函数或外部字典时,这非常方便,但该数据源存在 JDBC 驱动程序。

您可以使用 ClickHouse JDBC 桥进行读取和写入。同时可以并行访问多个外部数据源,例如,您可以在 ClickHouse 上跨多个外部和内部数据源实时运行分布式查询。

在本课中,我们将展示如何轻松安装、配置和运行 ClickHouse JDBC 桥,以便将 ClickHouse 连接到外部数据源。我们将使用 MySQL 作为本课的外部数据源。

让我们开始吧!

先决条件

您可以访问以下具有的机器:

  1. 一个具有 Unix shell 和互联网访问的机器
  2. 已安装 wget
  3. 已安装最新版本的 Java (例如 OpenJDK 版本 >= 17)
  4. 已安装并运行最新版本的 MySQL (例如 MySQL 版本 >=8)
  5. 已安装并运行最新版本的 ClickHouse 安装

在本地安装 ClickHouse JDBC 桥

使用 ClickHouse JDBC 桥的最简单方法是在与 ClickHouse 运行的同一主机上安装和运行它:

我们首先连接到运行 ClickHouse 的机器上的 Unix shell,并创建一个本地文件夹,以便稍后在其中安装 ClickHouse JDBC 桥(您可以随意命名文件夹并放置在您喜欢的位置):

现在我们将 当前版本 的 ClickHouse JDBC 桥下载到该文件夹中:

为了能够连接到 MySQL,我们创建一个命名数据源:

现在您可以将以下配置复制并粘贴到文件 ~/clickhouse-jdbc-bridge/config/datasources/mysql8.json 中:

备注

在上面的配置文件中

  • 您可以自由使用任何您喜欢的命名数据源,我们使用了 mysql8
  • jdbcUrl 的值中,您需要将 <host><port> 替换为根据您运行的 MySQL 实例适当的值,例如 "jdbc:mysql://localhost:3306"
  • 您需要将 <username><password> 替换为您的 MySQL 凭据,如果您不使用密码,可以删除配置文件中 "password": "<password>" 这一行
  • driverUrls 的值中,我们只指定了一个 URL,以便从中下载 当前版本 的 MySQL JDBC 驱动程序。就这样,ClickHouse JDBC 桥将自动下载该 JDBC 驱动程序(到操作系统特定目录中)。

现在我们准备启动 ClickHouse JDBC 桥:

备注

我们在前台模式下启动了 ClickHouse JDBC 桥。为了停止桥接,您可以将上面的 Unix shell 窗口带到前台并按 CTRL+C

从 ClickHouse 内部使用 JDBC 连接

ClickHouse 现在可以通过使用 jdbc 表函数JDBC 表引擎 来访问 MySQL 数据。

执行以下示例的最简单方法是将它们复制并粘贴到 clickhouse-clientPlay UI 中。

  • jdbc 表函数:
备注

作为 jdbc 表函数的第一个参数,我们使用上面配置的命名数据源的名称。

  • JDBC 表引擎:
备注

作为 jdbc 引擎子句的第一个参数,我们使用上面配置的命名数据源的名称。

ClickHouse JDBC 引擎表的架构和连接的 MySQL 表的架构必须对齐,例如,列名和顺序必须相同,并且列的数据类型必须兼容。

外部安装 ClickHouse JDBC 桥

对于分布式 ClickHouse 集群(多个 ClickHouse 主机的集群),在其自己的主机上安装和运行 ClickHouse JDBC 桥是有意义的:

这有一个优势,即每个 ClickHouse 主机都可以访问 JDBC 桥。否则,每个需要通过桥接访问外部数据源的 ClickHouse 实例都需要在本地安装 JDBC 桥。

为了在外部安装 ClickHouse JDBC 桥,我们执行以下步骤:

  1. 我们在专用主机上安装、配置和运行 ClickHouse JDBC 桥,按照本指南第一部分中描述的步骤进行操作。

  2. 在每个 ClickHouse 主机上,我们将以下配置块添加到 ClickHouse 服务器配置 中(根据您选择的配置格式,使用 XML 或 YAML 版本):

备注
  • 您需要将 JDBC-Bridge-Host 替换为专用 ClickHouse JDBC 桥主机的主机名或 IP 地址
  • 我们指定了默认的 ClickHouse JDBC 桥端口 9019,如果您使用不同的端口,那么您必须相应地调整上面的配置