Clickhouse系列之JDBC集成外部数据源

737 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情

前言

官方有介绍,它是这样说的:ClickHouse JDBC Bridge与JDBC Table Function或JDBC Table Engine一起使用,它允许ClickHouse从任何外部数据源访问数据,但是前提是这些数据源都要有JDBC驱动程序,如下图所示:

image.png 当外部数据源没有可用的本机内置集成引擎、表函数或外部字典,但存在数据源的JDBC驱动程序时,这很方便。您可以使用ClickHouse JDBC桥进行读取和写入。同时针对多个外部数据源,例如,您可以在ClickHouse上跨多个外部和内部数据源实时运行分布式查询。 这次案例,我将向你展示安装、配置和运行ClickHouse JDBC Bridge以将ClickHouse与外部数据源连接是多么容易。我也会使用MySQL作为本次案例外部数据源。好啦,我们开始吧!!!如有问题,欢迎留言讨论

正文

环境或者说是前提,如下:

Unix shell终端可以连接与使用;
wget已安装;
已安装Java的当前版本(例如OpenJDK版本>=17);
安装并运行MySQL的当前版本(例如MySQL版本>=8);
已安装并正在运行的ClickHouse的当前版本
安装ClickHouse JDBC Bridge(不推荐)

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

image.png 首先连接到运行ClickHouse的机器上的Unix shell终端,并创建一个本地文件夹,稍后我们将在其中安装ClickHouse JDBC Bridge,具体步骤如下:

mkdir ~/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
cd ~/clickhouse-jdbc-bridge
mkdir -p config/datasources
touch config/datasources/mysql8.json

使用vim打开这个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>"
  }
}

现在开始连接,命令如下:

cd ~/clickhouse-jdbc-bridge
java -jar clickhouse-jdbc-bridge-2.0.7-shaded.jar
使用内置的JDBC连接(推荐使用)

ClickHouse是可以通过使用jdbc表函数或jdbc表引擎访问MySQL数据。 执行以下示例的最简单方法是将它们复制并粘贴到本机ClickHouse命令行客户端或ClickHouse play HTTP Interface中,具体命令如下。 a) 查询函数方式

SELECT * FROM jdbc('mysql8', 'mydatabase', 'mytable');

b) 表引擎方式

CREATE TABLE mytable (
     <column> <column_type>,
     ...
)   
ENGINE = JDBC('mysql8', 'mydatabase', 'mytable');
SELECT * FROM mytable;
总结

这节主要讲解JDBC集成外部数据源的方式,一共有两种,一种是安装JDBC Bridge,另一种是使用内置的JDBC。我们推荐使用内置的JDBC方式,因为其具备极简单的操作性。对于JDBC Bridge安装,这节只介绍了一种,JAVA的方式,其实官方还有一种方式,通过配置文件进行配置。

image.png