ClickHouse入门:表引擎-JDBC

x33g5p2x  于2021-12-25 转载在 其他  
字(1.2k)|赞(0)|评价(0)|浏览(606)

前言
使用到的插件及数据库版本:
Postgresql:10.8
ClickHouse:20.9.3.45
Postgresql-JDBC-driver:42.2.5

简介

JDBC表引擎可以对接Mysql、Postgresql、SQLite等数据库,但是JDBC表引擎不能单独完成对接工作,需要依赖clickhouse-jdbc-bridge的查询代理服务,clickhouse-jdbc-bridge是java语言实现的sql代理服务,项目地址为:
https://github.com/ClickHouse/clickhouse-jdbc-bridge

安装配置

  • 构建clickhouse-jdbc-bridge
    可直接根据上一步的地址编译项目,生成clickhouse-jdbc-bridge-1.0.jar的服务jar包
  • 启动clickhouse-jdbc-bridge代理服务
java -jar ./clickhouse-jdbc-bridge-1.0.jar --driver-path lib --listen-host 127.0.0.1

参数说明:
–driver-path jdbc驱动存放的路径
–listen-host 代理服务绑定的IP及端口(端口默认为9019)
启动后,日志如下:

  • 配置clickhouse全局配置,添加代理服务的访问地址
vi /etc/clickhouse-server/config.xml

添加如下配置:

<jdbc_brige>
   	 <host>127.0.0.1</host>
    	<port>9019</port>
 </jdbc_brige>
  • 重启ClickHouse-Server

JDBC表引擎声明方式

ENGINE = JDBC(‘JDBC:url’, ‘database’, ‘table’)

  • 参数说明:
    url:jdbc连接串
    database:对接的表所在数据库
    table:要对接的表
  • 创建一张映射表:
CREATE TABLE nt_order_payment
(
    `id` Int32,
	`order_no` String
)
ENGINE JDBC('jdbc:postgresql://xxxx:5432/test?user=xxx&password=xxx', '', 'nt_order_payment');

查询测试

  • 建表

  • 执行查询
select count(0) from nt_order_payment;

这时候可以去代理服务clickhouse-jdbc-bridge查看日志输出:

日志显示,jdbc表引擎首先会去ping以下代理服务,ping通之后会向代理服务发送查询请求

JDBC函数通过代理服务访问其它数据库

  • 例子
select id,order_no from jdbc('jdbc:postgresql://xxx:5432/xxx?user=xxx&password=xxx', '', 'nt_order_payment') limit 1;

下一篇:表引擎-HDFS

相关文章