Lakehouse Bulkload 快速入门
简介
Bulkload 是 Lakehouse 提供的一种面向高吞吐量设计的批量数据写入接口,特别适合处理大量连续性写入场景。使用 Bulkload 写入的数据在提交后即可查看。
批量导入原理
批量上传的SDK提供了一种高效的数据导入机制,适用于云器Lakehouse。以下是其工作原理的简化描述和流程图:
- 数据上传:通过SDK,您的数据首先被上传到对象存储服务。这一步骤的性能受到本地网络速度和并发连接数的影响。
- 触发导入:数据上传完成后,当您调用
bulkloadStream.close()方法时,SDK会自动触发一个SQL命令,将数据从对象存储导入到Lakehouse的表中。不建议您在一个任务中频繁调用bulkloadStream.close(),bulkloadStream.close()最后只能调用一次。 - 计算资源:上传数据建议选择通用型计算集群(GENERAL PURPOSE VIRTUAL CLUSTER)通用型计算资源更加适合跑批量作业和加载数据作业,数据从对象存储到Lakehouse表的导入速度取决于您配置的计算资源的大小。
- 分片上传优化:处理大于1GB的压缩数据时,建议在
createRow方法中为每个并发线程或进程分配唯一的分片ID。这种做法能够充分发挥多线程或多进程的并行处理优势,显著提升数据导入的效率。最佳实践是,根据并发的数量来确定分片ID的数量,确保每个并发对应一个独立的分片ID。如果多个并发被分配了相同的分片ID,最终写入的数据可能会发生覆盖,导致先前的数据丢失。为确保所有分片的数据都被正确导入表中,请在所有并发操作完成后,调用bulkloadStream.close()方法来提交整个导入任务。
以下是批量导入原理的流程图:
适用场景
批量上传文件的SDK特别适用于以下情况:
- 一次性大量数据导入:当您需要导入大量数据时,无论是一次性的批量任务还是周期性但间隔较长的操作。
- 导入频率不高:如果您的导入数据频率不高(时间间隔大于五分钟),即使单次导入的数据量不大,使用批量导入SDK也是合适的。
不适用场景
批量上传文件的SDK不适用于以下情况:
- 实时数据导入:如果您需要在极短时间内(如5分钟之内)频繁导入数据,建议使用实时数据接口,以满足对实时性的要求。
联系我们
