通过 Kyuubi 连接 Doris

介绍

Apache Kyuubi 是一个分布式和多租户网关,用于在 Lakehouse 上提供 Serverless SQL,可连接包括Spark、Flink、Hive、JDBC等引擎,并对外提供Thrift、Trino等接口协议供灵活对接。 其中Apache Kyuubi实现了JDBC Engine并支持Doris方言,并可用于对接Doris作为数据源。 Apache Kyuubi可提供高可用、服务发现、租户隔离、统一认证、生命周期管理等一系列特性。

下载 Apache Kyuubi

配置方法

下载 Apache Kyuubi

从官网下载Apache Kyuubi 1.6.0或以上版本的安装包后解压。

Apache Kyuubi 下载地址: <https://kyuubi.apache.org/zh/releases.html>

配置Doris作为Kyuubi数据源

  • 修改配置文件 $KYUUBI_HOME/conf/kyuubi-defaults.conf
1. kyuubi.engine.type=jdbc
2. kyuubi.engine.jdbc.type=doris
3. kyuubi.engine.jdbc.driver.class=com.mysql.cj.jdbc.Driver
4. kyuubi.engine.jdbc.connection.url=jdbc:mysql://xxx:xxx
5. kyuubi.engine.jdbc.connection.user=***
6. kyuubi.engine.jdbc.connection.password=***
配置项 说明
kyuubi.engine.type 引擎类型。请使用jdbc
kyuubi.engine.jdbc.type JDBC 服务类型。这里请指定为doris
kyuubi.engine.jdbc.driver.class 连接 JDBC 服务使用的驱动类名。请使用com.mysql.cj.jdbc.Driver
kyuubi.engine.jdbc.connection.url JDBC 服务连接。这里请指定 Doris FE 上的 mysql server 连接地址
kyuubi.engine.jdbc.connection.user JDBC 服务用户名
kyuubi.engine.jdbc.connection.password JDBC 服务密码

添加MySQL驱动

添加 Mysql JDB C驱动 mysql-connector-j-8.X.X.jar 到 $KYUUBI_HOME/externals/engines/jdbc 目录下。

启动 Kyuubi 服务

$KYUUBI_HOME/bin/kyuubi start 启动后,Kyuubi默认监听10009端口提供Thrift协议。

使用方法

以下例子展示通过Apache Kyuubi的beeline工具经Thrift协议查询Doris。

建立连接

1. $ $KYUUBI_HOME/bin/beeline -u "jdbc:hive2://xxxx:10009/"

执行查询

执行查询语句 select * from demo.expamle_tbl; 并得到结果。

1. 0: jdbc:hive2://xxxx:10009/> select * from demo.example_tbl;

3. 2023-03-07 09:29:14.771 INFO org.apache.kyuubi.operation.ExecuteStatement: Processing anonymous's query[bdc59dd0-ceea-4c02-8c3a-23424323f5db]: PENDING_STATE -> RUNNING_STATE, statement:
4. select * from demo.example_tbl
5. 2023-03-07 09:29:14.786 INFO org.apache.kyuubi.operation.ExecuteStatement: Query[bdc59dd0-ceea-4c02-8c3a-23424323f5db] in FINISHED_STATE
6. 2023-03-07 09:29:14.787 INFO org.apache.kyuubi.operation.ExecuteStatement: Processing anonymous's query[bdc59dd0-ceea-4c02-8c3a-23424323f5db]: RUNNING_STATE -> FINISHED_STATE, time taken: 0.015 seconds
7. +----------+-------------+-------+------+------+------------------------+-------+-----------------+-----------------+
8. | user_id  |    date     | city  | age  | sex  |    last_visit_date     | cost  | max_dwell_time  | min_dwell_time  |
9. +----------+-------------+-------+------+------+------------------------+-------+-----------------+-----------------+
10. | 10000    | 2017-10-01  | 北京   | 20   | 0    | 2017-10-01 07:00:00.0  | 70    | 10              | 2               |
11. | 10001    | 2017-10-01  | 北京   | 30   | 1    | 2017-10-01 17:05:45.0  | 4     | 22              | 22              |
12. | 10002    | 2017-10-02  | 上海   | 20   | 1    | 2017-10-02 12:59:12.0  | 400   | 5               | 5               |
13. | 10003    | 2017-10-02  | 广州   | 32   | 0    | 2017-10-02 11:20:00.0  | 60    | 11              | 11              |
14. | 10004    | 2017-10-01  | 深圳   | 35   | 0    | 2017-10-01 10:00:15.0  | 200   | 3               | 3               |
15. | 10004    | 2017-10-03  | 深圳   | 35   | 0    | 2017-10-03 10:20:22.0  | 22    | 6               | 6               |
16. +----------+-------------+-------+------+------+------------------------+-------+-----------------+-----------------+
17. 6 rows selected (0.068 seconds)