一、背景

从hive抽取数据到clickhouse,如果简单的使用datax写json读写数据,会报错,则需要clickhouse的一个jdbc组件clickhouse-jdbc-bridge,通过bridge服务使用jdbc远程连接到hive数据库查询数据。

select * 
from jdbc('hivejdbc'
         ,' SELECT * 
            FROM test_table')

二、安装

step1. 从https://github.com/ClickHouse/clickhouse-jdbc-bridge下载组件源码zip程序

wget https://github.com/ClickHouse/clickhouse-jdbc-bridge/releases/download/v2.0.2/clickhouse-jdbc-bridge-2.0.2-shaded.jar

step2. 将下载 clickhouse-jdbc-bridge源码包clickhouse-jdbc-bridge-master.zip解压

unzip clickhouse-jdbc-bridge-master.zip

step3. 编译源码,生成jar包

cd clickhouse-jdbc-bridge-master

step4.执行如下命令,完成编译。编译结束,target目录下会生成两个jar包,使用*shaded结尾程序包。

mvn compile package

step5. 将-shaded.jar结尾的程序包上传到clickhouse所在服务器,并在该文件同目录下新建两个目录:①config/datasources  --存放数据源配置文件;②drivers  --jdbc驱动存放目录

三、配置

step1. 刚刚已经在clickhouse所在服务器同目录下新建目录config/datasources,在该目录下找到hivejdbc.json文件名或新建,配置该文件。其中文件名会用于查询sql。

/etc/clickhouse-jdbc-bridge/config/datasources/hivejdbc.json

step2. 配置数据库链接IP和账号密码。其中jdbcurl中的IP在不同场景中会有公网或内网的区别。例如可能是服务器配置访问的是内网地址ip,但是在客户端查询访问的IP公网IP。

more /etc/clickhouse-idbc-bridge/contig/datasources/hivejdbc.jsor

json文件内容:

{
    "impala": {
      "driverUrls": [
        "/root/etl_ext_lib/ImpalaJDBC41.jar"     --驱动路径 
      ],
      "driverClassName": "com.mysql.cj.jdbc.Driver",  --驱动名称
      "jdbcUrl": "jdbc:impala://localhost:21050/default",  --链接地址
      "user":"impala",   --用户名
      "password":"impala"  --用户密码
    }
}

四、启动服务

java -jar -shaded.jar结尾的程序包

五、查询

远程访问hive库test_table表数据,第一个参数'hivejdbc'对应的是config/datasources目录下hivejdbc.json的文件名。

select * 
from jdbc('hivejdbc'
         ,' SELECT * 
            FROM test_table')

 六、参考案例

ClickHouse JDBC表引擎(clickhouse-jdbc-bridge)

clickhouse-jdbc-bridge

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐