news 2026/6/19 14:52:18

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/6/15 12:52:17

Markdown+Jupyter:用Miniconda-Python3.10输出高质量技术文档

MarkdownJupyter:用Miniconda-Python3.10输出高质量技术文档 在数据科学和AI研发日益工程化的今天,一份“能跑通”的技术文档远比静态PDF更有说服力。你有没有遇到过这样的场景:同事发来一份实验报告,结论看起来很惊艳&#xff0…

作者头像 李华
网站建设 2026/6/15 15:57:43

Docker容器中运行Miniconda-Python3.10进行模型训练的完整流程

Docker容器中运行Miniconda-Python3.10进行模型训练的完整流程 在深度学习项目开发中,最让人头疼的问题往往不是模型调参,而是环境配置——“在我机器上明明能跑”的尴尬场景屡见不鲜。不同项目依赖不同版本的PyTorch、TensorFlow或CUDA,一旦…

作者头像 李华
网站建设 2026/6/17 20:25:27

2025最新!8款AI论文工具测评:本科生写论文还能这么快

2025最新!8款AI论文工具测评:本科生写论文还能这么快 2025年AI论文工具测评:为何值得一看 随着人工智能技术的不断进步,越来越多的本科生开始借助AI工具提升论文写作效率。然而,面对市场上种类繁多的AI论文工具&#x…

作者头像 李华
网站建设 2026/6/15 11:46:54

PyTorch安装教程进阶篇:多版本共存与环境隔离策略

PyTorch安装教程进阶篇:多版本共存与环境隔离策略 在深度学习项目开发中,你是否曾遇到过这样的场景?一个刚接手的旧项目依赖 PyTorch 1.12 和 CUDA 11.3,而新任务却要求使用 PyTorch 2.0 的图模式训练功能。当你试图升级框架时&am…

作者头像 李华
网站建设 2026/6/15 11:47:11

Docker Run命令实战:快速部署PyTorch开发环境(含GPU支持)

Docker Run命令实战:快速部署PyTorch开发环境(含GPU支持) 在深度学习项目中,最让人头疼的往往不是模型调参,而是环境配置——“在我机器上能跑”的经典难题几乎困扰过每一位开发者。Python 依赖冲突、CUDA 版本不匹配…

作者头像 李华
网站建设 2026/6/15 12:55:50

Jupyter labextension list查看Miniconda扩展状态

Jupyter labextension list 查看 Miniconda 扩展状态 在现代数据科学与 AI 开发中,一个稳定、可复现的开发环境是高效迭代的基础。然而,许多开发者都曾遇到过这样的情况:明明已经“安装”了某个 Jupyter Lab 插件,比如代码补全或变…

作者头像 李华