更新时间:2026-03-02 GMT+08:00
分享

Lakeformation写入模式最佳实践

概述

数据集成服务在将上游数据写入Lakeformation时,提供了LOAD和LOAD OVERWRITE两种写入模式。这两种模式都会在表的OBS路径下创建一个临时路径,将上游数据以表对应的文件格式直接写入该临时路径中;然后通过重命名文件的方式将其移动到表的正式目录下。不同之处在于,LOAD模式会直接移动文件,实现数据的新增;而LOAD OVERWRITE模式则会在移动文件前清除已有的分区数据,从而实现数据的更新。这种方式与Hive的LOAD和LOAD OVERWRITE语法相似。

写入模式

  • Load模式

    Load模式是 Lakeformation最基本的写入方式。在表OBS路径下创建一个临时路径,将数据写进该临时的OBS路径的数据文件,在任务结束时将临时文件移到到表OBS正式路径下。不会对目标表进行清理操作,而是以新增的方式写入数据。

    • 特点
      • 不清理目标表:写入数据前不会对目标表进行任何清理操作,新数据会追加到目标表中。
      • 支持增量写入:适用于数据追加场景,即目标表中已存在数据,新数据需要追加到目标表中,能够高效地处理增量数据。
    • 实践样例

      假设源端为MySQL数据表data,目标表为Lakeformation数据表data,分区字段为dt。

      配置作业,MySQL表中的增量数据写入Lakeformation表中,Lakeformation会根据分区字段dt将数据追加到对应的分区中。

      图1 配置源端目的端数据表

      源端MySQL表结构如下:

      CREATE TABLE `data` (
        `id` varchar(10) DEFAULT NULL,
        `dt` date DEFAULT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

      目标端Lakeformation表结构如下:

      图2 Lakeformation表结构
  • Load Overwrite模式

    Load Overwrite在表OBS路径下创建一个临时路径,将数据写进该临时的OBS路径的数据文件,在任务结束时,先清空对应分区数据,后临时文件移到到表OBS正式路径下。

    • 实现

      这种模式在Lakeformation中通过以下步骤实现:

      1. 创建临时目录:首先创建一个临时目录,用于暂存写入的数据。
      2. 清空涉及的分区数据:在作业结束时,将涉及到已有分区数据进行清理。
      3. 添加数据文件:将临时目录的数据文件进行Rename操作,移到到对应的分区路径下。
    • 动态分区与静态分区写入支持
      Load Overwrite模式支持动态分区和静态分区两种写入场景。
      • 动态分区写入:在动态分区写入场景中,源数据中的分区字段值将被自动识别并用于确定目标分区,允许一次性覆盖多个分区,满足多分区数据更新的需求。
      • 静态分区写入:在静态分区写入场景中,需要在写入操作中明确指定目标分区,仅覆盖指定的单个分区,适用于对特定分区进行精确更新的场景。
    • 实践样例

      假设源端为MySQL数据表data,目标表为Lakeformation数据表data,分区字段为dt。

      源端MySQL表结构如下:

      CREATE TABLE `data` (
        `id` varchar(10) DEFAULT NULL,
        `dt` date DEFAULT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

      目标端Lakeformation表结构如下:

      create table if not exists "default"."data"(
      "id" varchar(10))
      STORE AS PARQUET
       PARTITION BY ("dt" date)
      • 静态分区写入

        如果希望将MySQL表中的所有数据写入Lakeformation表的dt=2025-10-21的分区,可以选择LOAD OVERWRITE模式,并在写入操作中指定分区过滤条件为dt=2025-10-21。

        图3 配置参数
      • 动态分区写入

        Mysql的源端数据包含多个分区的数据,希望源数据中的分区字段值将被自动识别并用于确定目标分区,允许一次性覆盖多个分区,满足多分区数据更新的需求。

        你可以选择【写入模式】为【Load_Overwrite】,【分区过滤条件】为不填入,同时字段映射配置源和目的端分区字段dt。

        图4 配置参数
        图5 配置映射关系

总结

通过合理选择LoadLoad Overwrite 两种数据加载模式,可以根据不同的业务需求高效地进行数据迁移和更新。在实际操作中,建议遵循上述最佳实践建议,确保数据的一致性和系统的性能。

相关文档