一、数据导入(Load)
1、为适配不同的数据导入需求,Doris系统提供了五种不同的数据导入方式,每种数据导入方式支持不同的数据源,存在不同的方式(异步,同步)
- Broker load
通过Broker进程访问并读取外部数据源(HDFS)导入Doris,用户通过Mysql提交导入作业,异步执行,通过show load命令查看导入结果
- Stream load
用户通过HTTP协议提交请求并携带原始数据创建导入,主要用于快速将本地文件或者数据流中的数据导入到Doris,导入命令同步返回结果
- Insert
类似Mysql中的insert语句,Doris提供insert into table select …的方式从Doris的表中读取数据并导入到另一张表中,或者通过insert into table values(…)的方式插入单条数据
- Multi load
用户可以通过HTTP协议提交多个导入作业,Multi load可以保证多个导入作业的原子生效
- Routine load
用户通过Mysql协议提交例行导入作业,生成一个常驻线程,不间断的从数据源(如Kafka)中读取数据并导入到Doris中
2、Broker Load
Broker load是一个导入的异步方式,不同的数据源需要部署不同的 broker 进程。可以通过 show broker 命令查看已经部署的 broker。
适用场景
- 源数据在Broker可以访问的存储系统中,如HDFS
- 数据量在几十到几百GB级别
基本原理
用户在递交导入任务后,FE(Doris系统的元数据和调度节点)会生成相应的PLAN(导入执行计划,BE会导入计划将输入导入Doris中)并根据BE(Doris系统的计算和存储节点)的个数和文件的大小,将PLAN分给多个BE执行,每个BE导入一部分数据。BE在执行过程中会从Broker拉取数据,在对数据转换之后导入系统,所有BE均完成导入,由FE最终决定导入是否成功
前置操作
- 启动zookeeper集群(三台节点都启动):sh start
- 启动hdfs集群:start-dfs.sh
语法
LOAD LABEL load_label
(
data_desc1[, data_desc2, ...]
)
WITH BROKER broker_name
[broker_properties]
[opt_properties];
load_label 当前导入批次的标签,在一个 database 内唯一。
语法:
[database_name.]your_label
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容