更新时间:2023-10-16 GMT+08:00
分享

总览

导入(Load)功能就是将用户的原始数据导入到Doris中。导入成功后,用户即可通过Mysql客户端查询数据。Doris支持多种导入方式。

支持数据源

Doris提供多种数据导入方案,可以针对不同的数据源选择不同的数据导入方式。

支持的数据格式

不同的导入方式支持的数据格式不同。

表1 导入方式说明

导入方式

支持格式

Broker Load

parquet、orc、obs

Stream Load

csv、json、parquet、orc

导入说明

Doris的数据导入实现有以下共性特征,这里分别介绍,以帮助大家更好的使用数据导入功能。

导入的原子性保证

Doris的每一个导入任务,不论是使用Broker Load进行批量导入,还是使用INSERT语句进行单条导入,都是一个完整的事务操作。导入事务可以保证一批次内的数据原子生效,不会出现部分数据写入的情况。

同时,每个导入任务都会有一个Label。这个Label在数据库(Database)中是唯一的,用于唯一标识一个导入任务。Label可以由用户指定,部分导入功能也会由系统自动生成。

Label是用于保证对应的导入任务,仅能成功导入一次。一个被成功导入的Label,再次使用时,会被拒绝并报错Label already used。通过这个机制,可以在Doris侧做到At-Most-Once语义。如果结合上游系统的At-Least-Once语义,则可以实现导入数据的Exactly-Once语义。

同步和异步

Doris目前的导入方式分为两类,同步和异步。如果是外部程序接入Doris的导入功能,需要判断使用导入方式是哪类再确定接入逻辑。

  • 同步

    同步导入方式即用户创建导入任务,Doris同步执行导入,执行完成后返回用户导入结果。用户可直接根据创建导入任务命令返回的结果同步判断导入是否成功。

  • 异步

    异步导入方式即用户创建导入任务后,Doris直接返回创建成功。创建成功不代表数据已经导入。导入任务会被异步执行,用户在创建成功后,需要通过轮询的方式发送命令查看导入作业的状态。如果创建失败,则可以根据失败信息,判断是否需要再次创建。

    无论是异步还是同步的导入类型,都不应该在Doris返回导入失败或导入创建失败后,无休止的重试。外部系统在有限次数重试并失败后,保留失败信息,大部分多次重试均失败问题都是使用方法问题或数据本身问题。

相关文档