Apache Doris的Broker Load数据导入使用

前言

  • Stream Load 是一种推的方式,即导入的数据依靠客户端读取,并推送到 Doris。Broker Load 则是将导入请求发送给 Doris,有 Doris 主动拉取数据,所以如果数据存储在类似 HDFS 或者 对象存储中,则使用 Broker Load 是最方便的。这样,数据就不需要经过客户端,而有 Doris 直接读取导入。

  • 从 HDFS 或者 S3 直接读取,也可以通过 湖仓一体/TVF 中的 HDFS TVF 或者 S3 TVF 进行导入。基于 TVF 的 Insert Into 当前为同步导入,Broker Load 是一个异步的导入方式。

  • Broker Load 适合源数据存储在远程存储系统,比如 HDFS,并且数据量比较大的场景。


1、导入原理

  • 用户在提交导入任务后,FE 会生成对应的 Plan 并根据目前 BE 的个数和文件的大小,将 Plan 分给 多个 BE 执行,每个 BE 执行一部分导入数据。

  • BE 在执行的过程中会从 Broker 拉取数据,在对数据 transform 之后将数据导入系统。所有 BE 均完成导入,由 FE 最终决定导入是否成功。
    来自官网

  • 从上图中可以看到,BE 会依赖 Broker 进程来读取相应远程存储系统的数据。之所以引入 Broker 进程,主要是用来针对不同的远程存储系统,用户可以按照 Broker 进程的标准开发其相应的 Broker 进程,Broker 进程可以使用 Java 程序开发,更好的兼容大数据生态中的各类存储系统。由于 broker 进程和 BE 进程的分离,也确保了两个进程的错误隔离,提升 BE 的稳定性。

  • 当前 BE 内置了对 HDFS 和 S3 两个 Broker 的支持,所以如果从 HDFS 和 S3 中导入数据,则不需要额外启动 Broker 进程。如果有自己定制的 Broker 实现,则需要部署相应的 Broker 进程。

2、导入语法

    LOAD LABEL [database_name.]your_label
    (
    data_desc1[, data_desc2, ...]
    )
    WITH BROKER broker_name
    [broker_properties]
    [PROPERTIES ("key"="value", ...)];
  • your_label:当前导入的标签,在一个database内需要唯一
  • data_desc:可以通过多个data_desc向多个表导入数据,多个表导入要么全部成功,要么全部失败
  • PROPERTIES:用于指定一些特殊的参数,如下所示:

timeout :
导入任务的超时时间,在该时间内未完成,则状态变成CANCELLED。使用例子"timeout" = “14400”,默认4小时,单位为秒。导入任务的大概时间计算方式为:(总文件大小(MB) * 待导入的表及相关Rollup表的个数) / (单个BE导入速度(MB/S) * 导入并发数)

max_filter_ratio:
导入数据的容错率,默认为0,范围为0-1,计算方式为:max_filter_ratio = (dpp.abnorm.ALL / (dpp.abnorm.ALL + dpp.norm.ALL))
exec_mem_limit:导入的内存限制。默认为 2GB,单位为字节

3、导入案例

LOAD LABEL dwd.dwd_vehicle_stops_df_$[yyyyMMdd]
        (
            DATA INFILE("hdfs://172.0.0.1:8020/user/hive/warehouse/dwd.db/dwd_vehicle_stops_df/date=$[yyyyMMdd-1]/*")
            INTO TABLE `dwd_vehicle_stops_df`
            FORMAT AS "parquet"
			(veh_no,p_color,start_lon,start_lat,end_lon,end_lat,start_time,end_time,cur_code,distance,pos_cnt,duration,vec3)
             COLUMNS FROM PATH AS (date)
        ) 
        with HDFS (
            "fs.defaultFS"="hdfs://172.0.0.22:8020",
            "hadoop.username"="cttic"
        )
        PROPERTIES
        (
            "timeout"="1200",
            "max_filter_ratio"="0.1"
        );
  • DATA INFILE
    指定需要导入的文件路径。可以是多个。可以使用通配符。路径最终必须匹配到文件,如果只匹配到目录则导入会失败。

  • FORMAT AS

    指定文件类型,支持 CSV、PARQUET 和 ORC 格式。默认为 CSV。

  • COLUMNS FROM PATH AS

    指定从导入文件路径中抽取的列。


总结

如果此篇文章有帮助到您, 希望打大佬们能关注点赞收藏评论支持一波,非常感谢大家!
如果有不对的地方请指正!!!

参考1
参考2

  • 30
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lfwh

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

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

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

打赏作者

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

抵扣说明:

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

余额充值