Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

使用 JDBC 将 ClickHouse 连接到外部数据源

概述: ClickHouse JDBC Bridge 配合 jdbc 表函数JDBC 表引擎,可让 ClickHouse 访问任何提供了 JDBC 驱动 的外部数据源中的数据:

ClickHouse JDBC Bridge 架构图

当某个外部数据源没有可用的原生内置集成引擎、表函数或外部字典,但该数据源有 JDBC 驱动时,这种方式就很方便。

你既可以使用 ClickHouse JDBC Bridge 进行读取,也可以进行写入。它还可以同时用于多个外部数据源;例如,你可以让 ClickHouse 对多个外部和内部数据源实时运行分布式查询。

在本教程中,我们将向你演示如何轻松安装、配置并运行 ClickHouse JDBC Bridge,以便将 ClickHouse 连接到外部数据源。本教程将使用 MySQL 作为外部数据源。

让我们开始吧!

在本地安装 ClickHouse JDBC Bridge

使用 ClickHouse JDBC Bridge 最简单的方式,就是将其安装并运行在与 ClickHouse 相同的主机上:

ClickHouse JDBC Bridge 本地部署示意图

首先,连接到运行 ClickHouse 的机器上的 Unix shell,并创建一个本地文件夹,稍后我们会将 ClickHouse JDBC Bridge 安装到该文件夹中 (文件夹名称和存放位置都可以自行决定) :

mkdir ~/clickhouse-jdbc-bridge

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

cd ~/clickhouse-jdbc-bridge
wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.7/clickhouse-jdbc-bridge-2.0.7-shaded.jar

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

 cd ~/clickhouse-jdbc-bridge
 mkdir -p config/datasources
 touch config/datasources/mysql8.json

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

 {
   "mysql8": {
   "driverUrls": [
     "https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.28/mysql-connector-java-8.0.28.jar"
   ],
   "jdbcUrl": "jdbc:mysql://<host>:<port>",
   "username": "<username>",
   "password": "<password>"
   }
 }

现在,我们已准备好启动 ClickHouse JDBC Bridge:

 cd ~/clickhouse-jdbc-bridge
 java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jar

在 ClickHouse 中使用 JDBC 连接

ClickHouse 现在既可以通过 jdbc 表函数,也可以通过 JDBC 表引擎 访问 MySQL 数据。

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

  • jdbc 表函数:
 SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');
  • JDBC 表引擎:
 CREATE TABLE mytable (
      <column> <column_type>,
      ...
 )
 ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');

 SELECT * FROM mytable;

在外部安装 ClickHouse JDBC Bridge

对于分布式 ClickHouse 集群 (即包含多个 ClickHouse 主机的集群) ,将 ClickHouse JDBC Bridge 安装并运行在独立主机上是更合理的做法:

ClickHouse JDBC Bridge 外部部署示意图

这样做的好处是,每个 ClickHouse 主机都可以访问 JDBC Bridge。否则,每个需要通过 Bridge 访问外部数据源的 ClickHouse 实例都必须在本地安装 JDBC Bridge。

要在外部安装 ClickHouse JDBC Bridge,请执行以下步骤:

  1. 按照本指南第 1 节所述步骤,在专用主机上安装、配置并运行 ClickHouse JDBC Bridge。

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

<jdbc_bridge>
   <host>JDBC-Bridge-Host</host>
   <port>9019</port>
</jdbc_bridge>
Navigation