持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
前言
官方有介绍,它是这样说的:ClickHouse JDBC Bridge与JDBC Table Function或JDBC Table Engine一起使用,它允许ClickHouse从任何外部数据源访问数据,但是前提是这些数据源都要有JDBC驱动程序,如下图所示:
当外部数据源没有可用的本机内置集成引擎、表函数或外部字典,但存在数据源的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运行的同一主机上安装和运行它
首先连接到运行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的方式,其实官方还有一种方式,通过配置文件进行配置。