Build任务用于将实时写入的数据转换为历史数据格式。在该过程中会构建索引、清理冗余数据、执行异步DDL任务等,将数据从写优化转变为读优化。

功能说明

build命令可以对实时写入的数据及其涉及到的历史分区,进行合并、构建索引、执行异步DDL等操作。如果用户通过INSERT/UPDATE/DELETE等修改分区的数据,那么该分区需要执行Build,与实时数据结合后,生成新的分区。如果用户没有修改分区的数据,则该分区不会被Build任务修改。

Build任务开始后,不能停止任务。

当前Build任务是以表为粒度进行调度的。Build任务开始执行后,表级的Build任务会切分为以Shard为粒度的Build子任务,每个Shard的3个副本都有一个Build子任务,当所有的子任务都执行完成后,Build任务完成。不同表的Build任务可以并行执行,并行度默认为3。

自动触发BUILD任务

自动触发Build任务需要满足以下其中一个条件:
  • 达到最小Build时间间隔(预留模式:0.5小时,弹性模式:1.5小时),且单表满足新增数据达到5W条。
  • 距离上次Build,时间已过去24小时且至少修改1行数据。

手动触发BUILD任务

可通过以下两种方式手动触发BUILD任务:
  • build
    build table <table_name>;
  • force build

    Build只会修改变动的分区,而force build命令可以对所有分区进行强制Build。

    build table <table_name> force = true;
    重要 在表较大时,force build的执行时间会很长,尤其聚集索引需要对分区排序,执行需要慎重。

查看Build任务的状态

自动或手动触发Build任务后,执行如下SQL,查看最近3天Build任务的状态。
SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10;
根据status的值,判断Build任务状态。状态说明如下。
status说明
INIT任务初始化。
RUNNING任务运行中。
FINISH任务已完成。