跳到主要内容

Clickhouse JDBC Catalog

Doris JDBC Catalog 支持通过标准 JDBC 接口连接 ClickHouse 数据库。本文档介绍如何配置 ClickHouse 数据库连接。

关于 JDBC Catalog 概述,请参阅: JDBC Catalog 概述

使用须知

要连接到 ClickHouse 数据库,您需要

  • ClickHouse 23.x 或更高版本(低于此版本未经充分测试)。

  • ClickHouse 数据库的 JDBC 驱动程序,您可以从 Maven 仓库下载最新或指定版本的 ClickHouse JDBC 驱动程序。推荐使用 ClickHouse JDBC Driver 0.4.6 版本。

  • Doris 每个 FE 和 BE 节点和 ClickHouse 服务器之间的网络连接,默认端口为 8123。

连接 ClickHouse

CREATE CATALOG clickhouse PROPERTIES (
'type' = 'jdbc',
'user' = 'username',
'password' = 'pwd',
'jdbc_url' = 'jdbc:clickhouse://example.net:8123/',
'driver_url' = 'clickhouse-jdbc-0.4.6-all.jar',
'driver_class' = 'com.clickhouse.jdbc.ClickHouseDriver'
)

jdbc_url 定义要传递给 ClickHouse JDBC 驱动程序的连接信息和参数。支持的 URL 的参数可在 ClickHouse JDBC 驱动配置 中找到。

连接安全

如果您使用数据源上安装的全局信任证书配置了 TLS,则可以通过将参数附加到在 jdbc_url 属性中设置的 JDBC 连接字符串来启用集群和数据源之间的 TLS。

例如,通过将 ssl=true 参数添加到 jdbc_url 配置属性来启用 TLS:

'jdbc_url' = 'jdbc:clickhouse://example.net:8123/db?ssl=true'

有关 TLS 配置选项的更多信息,请参阅 Clickhouse JDBC 驱动程序文档 SSL 配置部分

层级映射

映射 ClickHouse 时,Doris 的一个 Database 对应于 ClickHouse 中的一个 Database。而 Doris 的 Database 下的 Table 则对应于 ClickHouse 中,该 Database 下的 Tables。即映射关系如下:

DorisClickHouse
CatalogClickHouse Server
DatabaseDatabase
TableTable

类型映射

ClickHouse TypeDoris TypeComment
boolboolean
stringstring
date/date32date
datetime(S)/datetime64(S)datetime(S)
float32float
float64double
int8tinyint
int16/uint8smallintDoris 没有 UNSIGNED 数据类型,所以扩大一个数量级
int32/uInt16int同上
int64/uint32bigint同上
int128/uint64largeint同上
int256/uint128/uint256stringDoris 没有这个数量级的数据类型,采用 STRING 处理
decimal(P, S)decimal(P, S) or string如果超过 Doris 支持的最大精度,使用 string 承接
enum/ipv4/ipv6/uuidstring
arrayarray
otherUNSUPPORTED

常见问题

  1. 读取 Clickhouse 数据出现 NoClassDefFoundError: net/jpountz/lz4/LZ4Factory 错误信息

    可以先下载lz4-1.3.0.jar包并放到每个 FE 和 BE 的目录下的 custom_lib/ 目录下(如不存在,手动创建即可)。