文章目录
Steam Load案例和注意事项
一、Steam Load案例
1、准备数据
2、创建 Doris 表
3、创建 Stream Load 导入任务
4、查看任务
5、查询Doris 表结果
二、注意事项
Steam Load案例和注意事项
一、Steam Load案例
下面以导入Linux节点本地磁盘数据到Doris为例,演示Stream Load使用方式。
1、准备数据
在node1节点中创建/root/csv-data/test.csv数据文件,内容如下:
1,zs,18,100
2,ls,19,200
3,ww,20,300
4,ml,21,400
5,tq,22,500
2、创建 Doris 表
create table stream_load_t1(
id int,
name string,
age int,
score double
)
ENGINE = olap
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(`id`) BUCKETS 8;
3、创建 Stream Load 导入任务
[root@node1 ~]# curl --location-trusted -u root:123456 -T /root/csv-data/test.csv -H "label:test-label" -H "column_separator:," http://node1:8030/api/example_db/stream_load_t1/_stream_load
{
"TxnId": 15016,
"Label": "test-label",
"TwoPhaseCommit": "false",
"Status": "Success",
"Message": "OK",
"NumberTotalRows": 5,
"NumberLoadedRows": 5,
"NumberFilteredRows": 0,
"NumberUnselectedRows": 0,
"LoadBytes": 60,
"LoadTimeMs": 223,
"BeginTxnTimeMs": 2,
"StreamLoadPutTimeMs": 7,
"ReadDataTimeMs": 0,
"WriteDataTimeMs": 125,
"CommitAndPublishTimeMs": 86
}
注意:
- 当前Doris内部保留30分钟内最近成功的label,重启集群后,30分钟前的lable会被删除。
- 用户无法手动取消 Stream Load,Stream Load 在超时或者导入错误后会被系统自动取消,取消后,已写入的数据也会回滚,不会生效。
4、查看任务
Stream Load 任务执行后,可以查看对应的导入的任务,命令如下,通过该命令可以观察Stream Load 对应的Label 已经存在哪些,目的不是观察任务是否成功,因为Stream Load 本身是同步执行导入并返回导入结果。
mysql> show stream load order by starttime desc limit 1\G;
*************************** 1. row ***************************
Label: test-label
Db: example_db
Table: stream_load_t1
User: root
ClientIp: 192.168.179.4
Status: Success
Message: OK
Url: N/A
TotalRows: 5
LoadedRows: 5
FilteredRows: 0
UnselectedRows: 0
LoadBytes: 60
StartTime: 2023-06-08 15:30:41.209
FinishTime: 2023-06-08 15:30:41.432
1 row in set (0.03 sec)
5、查询Doris 表结果
mysql> select * from stream_load_t1;
+------+------+------+-------+
| id | name | age | score |
+------+------+------+-------+
| 5 | tq | 22 | 500 |
| 1 | zs | 18 | 100 |
| 3 | ww | 20 | 300 |
| 4 | ml | 21 | 400 |
| 2 | ls | 19 | 200 |
+------+------+------+-------+
二、注意事项
1、开启BE上的Stream Load记录后,查询不到记录
这是因为拉取速度慢造成的,可以尝试调整下面的参数:
- 调大 BE 配置 stream_load_record_batch_size,这个配置表示每次从 BE 上最多拉取多少条 Stream load 的记录数,默认值为50条,可以调大到500条。
- 调小 FE 的配置 fetch_stream_load_record_interval_second,这个配置表示获取 Stream load 记录间隔,默认每120秒拉取一次,可以调整到60秒。
- 如果要保存更多的 Stream load 记录(不建议,占用 FE 更多的资源)可以将 FE 的配置 max_stream_load_record_size 调大,默认是5000条。
2、用户无法手动取消 Stream Load,Stream Load 在超时或者导入错误后会被系统自动取消。用户无法手动取消 Stream Load,Stream Load 在超时或者导入错误后会被系统自动取消。
3、通过MySQL Client 执行help stream load 命令可以查询Steam Load 更多使用帮助。
4、关于FE配置参数
stream_load_default_timeout_second:导入任务的超时时间(以秒为单位),导入任务在设定的 timeout 时间内未完成则会被系统取消,变成 CANCELLED。默认的 timeout 时间为 600 秒。如果导入的源文件无法在规定时间内完成导入,用户可以在 stream load 请求中设置单独的超时时间。或者调整 FE 的参数stream_load_default_timeout_second 来设置全局的默认超时时间。
5、关于BE配置参数
streaming_load_max_mb:Stream load 的最大导入大小,默认为 10G,单位是 MB。如果用户的原始文件超过这个值,则需要调整 BE 的参数 streaming_load_max_mb。
6、关于Stream Load的更多使用方式,参考官网:STREAM-LOAD - Apache Doris
- 📢博客主页:https://lansonli.blog.csdn.net
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
- 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨