【实操】基于 Arrow Flight SQL链接Doris4.x

自 Doris 2.1 版本起,基于 Arrow Flight SQL 协议实现了高速数据传输链路,支持多种语言使用 SQL 从 Doris 高速读取大批量数据。相比 MySQL Client 或 JDBC/ODBC 驱动方案,部分场景性能提升数十倍至百倍。Arrow Flight SQL 还提供通用 JDBC 驱动,可与同样遵循该协议的数据库无缝交互。

1.适用场景

  • 从 Doris 批量导出大规模数据用于分析(相比 MySQL/JDBC 协议性能提升数十至百倍)。
  • 数据分析下游使用 Apache Arrow、Pandas 等列存格式,希望避免行列转换开销。
  • 通过 BI 工具(如 DBeaver)使用 Arrow Flight SQL 协议访问 Doris。
  • 在 Spark、Flink 等大数据组件中以 Arrow 格式高速读取 Doris 数据。

2.实现原理

Doris 中查询结果以列存格式的 Block 组织。在 2.1 之前的版本,查询结果通过 MySQL Client 或 JDBC/ODBC 驱动传输至客户端时,需要将列存格式的 Block 序列化为行存格式的 Bytes,到达客户端后再反序列化为列存格式。

基于 Arrow Flight SQL 构建的高速数据传输链路,若客户端同样支持 Arrow 列存格式,整体传输过程将完全避免序列化/反序列化操作,彻底消除由此带来的时间及性能损耗。

3.服务端配置

使用 Arrow Flight SQL 之前,需要在 Doris FE 和 BE 上启用 Arrow Flight SQL 服务。

3.1修改fe配置

修改 fe/conf/fe.conf 中的 arrow_flight_sql_port 为一个可用端口,如 28070。

3.2修改be配置

修改 be/conf/be.conf 中的 arrow_flight_sql_port 为一个可用端口,如 8050。

3.3重启集群

#重启be集群(所有节点都执行)

#重启fe集群(所有节点都执行)

备注:fe.conf 与 be.conf 中配置的 arrow_flight_sql_port 端口号不能相同。

4.Java 使用方式链接Doris

Java 端共有三种连接方式可选,各方式的特点与选型建议如下:

4.1方式1:jdbc:arrow-flight-sql

Arrow Flight SQL 协议的开源 JDBC 驱动兼容标准 JDBC API,可用于大多数 BI 工具通过 JDBC 访问 Doris,并支持高速传输 Apache Arrow 数据。使用方式与 MySQL JDBC 驱动类似,只需将连接 URL 中的 jdbc:mysql 协议替换为 jdbc:arrow-flight-sql 协议,查询返回的结果依然是 JDBC 的 ResultSet 数据结构。

1.引入POM 依赖

<properties>
    <arrow.version>17.0.0</arrow.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.apache.arrow</groupId>
        <artifactId>flight-sql-jdbc-core</artifactId>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俊哥大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值