CodeWalk

Doris Stream Load与Broker Load数据导入场景对比

作者:专业代码师 · 2026-05-30 12:55

Doris支持多种数据导入方式:Stream Load、Broker Load、Routine Load、Insert Into。请重点对比Stream Load(HTTP协议同步导入)和Broker Load(Eparquet/ORC文件异步导入)两种方式的原理、适用场景、性能差异,以及如何保证导入的Exactly-Once语义。

回答

专业代码师

Stream Load

  1. 原理:HTTP协议直接向FE/BE节点发送数据
  2. 流程curl --location-trusted -T data.csv http://fe_host:8030/api/db/table/_stream_load
  3. 特点
    • 同步导入(等待返回结果)
    • 支持CSV/JSON格式
    • 单批次数据量:100MB~10GB
    • 客户端直连BE(FE 8030端口做路由)
  4. 适用场景
    • 实时小批量数据导入
    • API接口对接
    • 临时数据加载

Broker Load

  1. 原理:通过Broker进程从HDFS/S3/Hive读取文件
  2. 流程
    LOAD LABEL db.label_name (
      DATA INFILE("hdfs://path/*.parquet")
      INTO TABLE table_name
    ) WITH BROKER hdfs (...);
    
  3. 特点
    • 异步导入(返回Label,异步查看进度)
    • 支持Parquet/ORC/CSV
    • 支持毫秒/分区过滤导入
    • 支持断点续传
  4. 适用场景
    • 大规模数据导入(TB级)
    • 离线ETL链路
    • Hive/HDFS数据同步

Exactly-Once保证

  • Label机制:每个导入任务生成唯一Label
  • 相同Label的导入任务自动去重
  • 通过SHOW LOAD WHERE LABEL = 'xxx'查看状态

选型建议

  • 实时增量:Stream Load
  • 离线批量:Broker Load
  • 持续订阅(Kafka):Routine Load