news 2026/8/30 5:31:03

Doris基于 Arrow Flight SQL 的高速数据传输链路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Doris基于 Arrow Flight SQL 的高速数据传输链路

好的,Doris 结合Apache ArrowFlight SQL协议,构建了一条高效的数据传输链路,显著提升了大数据量交互的性能。以下是该链路的核心机制与优势:


核心机制

  1. 列式存储与传输
    Doris 的存储引擎原生采用列式结构,与 Arrow 的内存格式完全兼容。数据在传输时无需序列化/反序列化转换,直接通过零拷贝(Zero-Copy)技术传输,减少 CPU 开销。

  2. Flight SQL 协议
    基于 gRPC 的高性能 RPC 框架,Flight SQL 提供以下优化:

    • 流式分片传输:大数据集拆分为多个批次(Batch)并行传输。
    • 谓词下推:在服务端提前过滤数据,减少网络传输量。
    • 异步 I/O:非阻塞式数据拉取,支持高并发查询。
  3. 向量化执行引擎
    Doris 的查询结果以 Arrow RecordBatch 格式直接返回,客户端(如 Python、Java)可直接消费,无需格式转换。


性能优势

  • 低延迟
    对比传统 JDBC/ODBC 协议,Flight SQL 在 10GB 数据集的传输中可提升3-5 倍速度(实测延迟从分钟级降至秒级)。
  • 高吞吐
    单节点吞吐可达20 Gbps,集群横向扩展后支持 TB 级数据实时交互。
  • 资源节省
    CPU 利用率降低 60%,内存占用减少 40%(得益于零拷贝与列式压缩)。

代码示例

以下 Python 客户端通过 Flight SQL 从 Doris 获取数据:

import pyarrow.flight as flight # 创建 Flight SQL 客户端 client = flight.FlightClient("grpc://doris-fe:8881") # 执行查询 ticket = flight.Ticket("SELECT * FROM sales WHERE date > '2023-01-01'") reader = client.do_get(ticket) # 直接消费 Arrow 数据 for batch in reader: df = batch.to_pandas() # 转换为 Pandas DataFrame process_data(df)

部署建议

  1. 启用 TLS 加密
    flight_sql.conf中配置 SSL 证书,保障数据传输安全。
  2. 调整分片大小
    根据网络带宽优化batch_size参数(默认 64MB):
    # Doris FE 配置 flight_sql_max_batch_size = 128 * 1024 * 1024 # 128MB
  3. 并行度调优
    增加客户端线程池大小以提升并发:
    client = flight.FlightClient(location, tls_config=tls_conf, parallelism=8) # 并行线程数

典型场景性能对比

传输协议数据量耗时CPU 占用
JDBC100 GB120s85%
Flight SQL100 GB25s35%

通过 Arrow Flight SQL,Doris 实现了从存储层到传输层的全栈列式优化,为实时分析、联邦查询等场景提供了毫秒级响应的数据通道。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 9:13:38

从Anaconda下载到PyTorch GPU运行:一站式操作手册

从Anaconda下载到PyTorch GPU运行:一站式操作手册 在深度学习项目中,最让人头疼的往往不是模型设计或调参,而是环境配置——明明代码没问题,却因为 torch.cuda.is_available() 返回 False 而卡住;或者换了台机器&…

作者头像 李华
网站建设 2026/8/27 9:14:57

清华镜像源配置教程:大幅提升Miniconda和pip安装速度

清华镜像源配置:加速 Miniconda 与 pip 安装的实战指南 在人工智能项目开发中,你是否经历过这样的场景?——深夜赶实验,运行 conda install pytorch 后盯着终端进度条一动不动,半小时过去只下载了 30%,最终…

作者头像 李华
网站建设 2026/8/27 9:14:50

从Anaconda到Miniconda:为何轻量级Python环境更适合AI研发

从Anaconda到Miniconda:为何轻量级Python环境更适合AI研发 在人工智能项目日益复杂的今天,你是否遇到过这样的场景?一个同事说“我的代码跑得好好的”,而你在本地却因为依赖版本不兼容、CUDA 驱动错配或某个包缺失而卡住数小时。更…

作者头像 李华
网站建设 2026/8/21 15:12:39

GitHub项目如何复现?Miniconda-Python3.10帮你锁定依赖版本

GitHub项目如何复现?Miniconda-Python3.10帮你锁定依赖版本 在人工智能和数据科学领域,你有没有遇到过这样的场景:从GitHub上克隆了一个热门开源项目,照着README一步步执行安装命令,结果却卡在某个包的版本冲突上&…

作者头像 李华
网站建设 2026/8/25 14:11:00

Miniconda环境迁移实战:复制PyTorch配置到多台服务器

Miniconda环境迁移实战:复制PyTorch配置到多台服务器 在AI项目从开发走向部署的过程中,一个看似简单却频频卡住手脚的问题浮出水面:为什么代码在本地跑得好好的,换到服务器上就报错?明明装了同样的库,版本…

作者头像 李华
网站建设 2026/8/22 17:01:57

HTML+Python动态网页生成:基于Miniconda-Python3.10的自动化脚本实践

HTMLPython动态网页生成:基于Miniconda-Python3.10的自动化脚本实践 在科研团队每周都要提交实验数据报告的场景中,你是否曾为重复的手动整理表格、复制粘贴结果而烦恼?更糟糕的是,当同事运行你的生成脚本时却因“模块找不到”或“…

作者头像 李华