更新时间:2024-05-28 GMT+08:00

Doris数据导入规范

该章节主要介绍Doris数据导入规范。

Doris数据导入建议

  • 禁止高频执行updatedeletetruncate操作,推荐几分钟执行一次,使用delete必须设置分区或主键列条件。
  • 禁止使用INSERT INTO tbl1 VALUES (“1”), (“a”);方式导入数据,少量少次写可以,多量多频次时需使用Doris提供的StreamLoad、BrokerLoad、SparkLoad或者Flink Connector方式。
  • 在Flink实时写入数据到Doris的场景下,CheckPoint设置的时间需要考虑每批次数据量,如果每批次数据太小会造成大量小文件,推荐值为60s。
  • 建议不使用insert values作为数据写入的主要方式,批量数据导入推荐使用StreamLoad、BrokerLoad或SparkLoad。
  • 使用INSERT INTO WITH LABEL XXX SELECT方式进行数据导入,如果有下游依赖或查询,需要先查看导入的数据是否为可见状态。

    具体查看方法:通过show load where label='xxx' SQL命令查询当前INSERT任务状态(status)是否为“VISIBLE”,如果为“VISIBLE”导入的数据才可见。

  • Streamload数据导入适合10 GB以内的数据量、Brokerload适合百GB以内数据,数据过大时可考虑使用SparkLoad。
  • 禁止使用Doris的Routine Load进行导入数据操作,推荐使用Flink查询Kafka数据再写入Doris,更容易控制导入数据单批次数据量,避免大量小文件产生。如果确实已经使用了Routine Load进行导数,在没整改前请配置FE“max_tolerable_backend_down_num”参数值为“1”,以提升导入数据可靠性。
  • 建议低频攒批导入数据,平均单表导入批次间隔需大于30s,推荐间隔60s,一次导入1000~100000行数据。