使用 Dataflow 将 Delta Lake 表导入 Lakehouse

如果您需要迁移大量数据,将 Delta Lake 表迁移到无边界 Lakehouse 可能会非常复杂且成本高昂。Dataflow 作业构建器提供了一个低代码或无代码界面,可用于将 Cloud Storage Delta Lake 表直接导入 Lakehouse。系统会使用 Dataflow 作业将现有数据从 Delta Lake 表复制到目标 Lakehouse 表,该作业会根据数据量自动扩缩。

对于新表,Dataflow 会自动创建架构。对于现有表,系统不会修改架构,因此目标表架构必须正确映射到源 Delta Lake 表,作业才能成功完成。

使用以下连接详细信息从存储在 Cloud Storage 中的 Delta Lake 表导入数据。

导入这些数据后,您可以选择启用持续迁移。

准备工作

如需导入 Delta Lake 表数据,您需要具备以下条件:

  1. 启用 Dataflow API、BigQuery API 和 Lakehouse API(如果尚未启用)。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您是项目创建者,则可能已通过 Owner 角色 (roles/owner) 获得此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。

    启用 API

  2. 如需获得创建资源所需的权限,请让管理员向您授予项目的必要 Identity and Access Management (IAM) 角色。

  3. 存储在 Cloud Storage 存储桶中的现有 Delta Lake 表。表目录必须是有效的 Delta Lake 表根目录,其中包含您的 Parquet 数据文件和 _delta_log/ 事务日志目录。

  4. 一个 Lakehouse Iceberg 目录、命名空间和表,用于将数据导入其中。

支持和限制

使用 Dataflow 将 Delta Lake 表数据导入 Lakehouse 时,存在以下限制:

  • 您必须使用批处理流水线作业才能使用此功能。
  • 对于现有目标表,系统不会修改架构。目标表架构必须正确映射到源 Delta Lake 表架构。
  • 源数据必须是存储在 Cloud Storage 中的有效 Delta Lake 表。表根目录必须包含 Parquet 数据文件和 _delta_log/ 事务日志目录(包含 JSON 或 Parquet 日志文件),这些文件由 Delta Lake 创建。
  • Delta Lake 表来源不支持 Amazon S3。

导入 Delta Lake 表

如需将 Delta Lake 表导入 Lakehouse,请完成以下步骤:

  1. 在 Google Cloud 控制台中,前往 Lakehouse 运行时目录页面。

    前往 Lakehouse 运行时目录

  2. 选择要将数据导入到的目录、命名空间和表。

  3. 在表详情页面上,点击 导入表,然后选择从 Delta Lake 导入(批量)。

    系统会打开 Dataflow 作业构建器页面,并加载 Delta Lake 到 Lakehouse 蓝图。

  4. 在来源部分中:

    1. 如需展开 ReadFromDeltaLake Delta Lake 表来源面板,请点击 展开箭头。

    2. 在表路径字段中,输入 Delta Lake 表的根目录(包含数据文件和 _delta_log/ 目录)的 Cloud Storage URI。例如 gs://BUCKET_NAME/tables/TABLE_NAME。

    3. 可选:在 Hadoop 配置属性字段中,配置从 Cloud Storage 读取数据所需的任何其他 Hadoop 配置属性。例如:fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem。

    4. 点击完成。

  5. 在 Sink 部分中:

    1. 可选:查看 WriteToIceberg Lakehouse 表接收器面板。 此面板中的信息(例如 Lakehouse 表、目录名称和数据仓库位置)通常会预先填充。

    2. 点击完成。

  6. 在 Dataflow 选项部分中,点击运行作业。

如果您需要进一步自定义用于导入 Delta Lake 表的 Dataflow 流水线,可以使用作业构建器表单或 YAML 编辑器来实现。

检查作业输出

作业完成后,您可以在 BigQuery 中查询 Lakehouse 表,验证数据是否已复制到该表中。

  1. 在 Dataflow 作业列表中,检查作业状态是否为成功。

    转到作业

  2. 如果作业失败或出现错误,请查看作业日志或工作器日志了解详情。

  3. 在 Google Cloud 控制台中,前往 BigQuery Studio 页面。

    转到 BigQuery

  4. 在查询编辑器中,输入 SQL 查询以检查表。您可以使用 PROJECT_ID.CATALOG.NAMESPACE.TABLE_NAME 约定进行查询:

    SELECT * FROM `PROJECT_ID`.`CATALOG`.`NAMESPACE`.`TABLE_NAME` LIMIT 10;
    
  5. 点击 Run(运行)。

  6. 查看查询结果,确保数据已正确处理。

可选。支持持续迁移

如需设置从 Delta Lake 到 Lakehouse 的端到端持续迁移,请按顺序完成以下操作:

  1. 在输入 Delta Lake 表上启用 delta.enableChangeDataFeed 属性。
  2. 在设置 delta.enableChangeDataFeed 属性后,执行初始表迁移到提交 ID 或时间戳。
  3. 使用根据工作负载要求选择的频率(提交 ID 或时间戳范围)运行针对后续数据的已安排的 CDC 作业。

如需了解详情,请参阅使用 Dataflow 将 Delta Lake 变更数据捕获 (CDC) 数据迁移到 Lakehouse。

后续步骤