Doris 支持通过 Broker Load 方式实现 HDFS 数据的异步导入,该方式适用于大数据量场景且不阻塞客户端操作。以下是关键步骤和注意事项:


1. 核心流程

  • Broker 代理访问
    通过 Doris 的 Broker 进程访问 HDFS(需提前部署 Broker 并配置 HDFS 权限)。
  • 提交异步任务
    用户通过 SQL 提交导入任务,Doris 后台执行数据拉取、转换和分布式写入。
  • 任务状态监控
    通过 SHOW LOAD 命令查询任务进度和结果。

2. 语法示例

LOAD LABEL test_db.hdfs_load_label
(
    DATA INFILE("hdfs://path/to/file/*.csv")
    INTO TABLE target_table
    COLUMNS TERMINATED BY ","
)
WITH BROKER "broker_name"
(
    "hadoop.security.authentication" = "kerberos",
    "kerberos_principal" = "doris@YOUR.REALM",
    "kerberos_keytab" = "/path/to/keytab"
)
PROPERTIES
(
    "timeout" = "3600",
    "max_filter_ratio" = "0.1"
);

参数说明:

  • LABEL:任务唯一标识
  • BROKER:配置文件中定义的 Broker 名称
  • PROPERTIES:超时时间、容错率等控制参数

3. 关键技术点

  • 分区与并发
    数据自动按 Doris 表分区切分,并行导入到不同 BE 节点。
  • 事务保证
    任务成功则数据原子性生效;失败时可通过 SHOW LOAD WHERE LABEL = "xxx" 查看错误细节。
  • 数据转换
    支持在导入时通过 SQL 函数转换数据类型(如 COLUMNS (col1, tmp_col, col2=tmp_col+1))。

4. 注意事项

  1. HDFS 权限
    Broker 需配置 Kerberos 或用户名/密码访问 HDFS。
  2. 文件格式
    支持 CSV、Parquet、ORC 等格式,需匹配 COLUMNS TERMINATED BY 等参数。
  3. 资源隔离
    大任务建议通过 SET 指定资源组,避免影响查询性能:
    SET RESOURCE_GROUP = "heavy_load";
    


5. 状态查询

-- 查看任务列表
SHOW LOAD WHERE STATE = "LOADING";

-- 检查错误数据
SHOW LOAD WARNINGS ON "hdfs_load_label";

异步导入方式适用于 TB 级数据迁移,但需提前验证 Broker 网络连通性与 HDFS 稳定性。

更多推荐