使用 Dataflow 作业构建器将 Delta Lake 表导入 Lakehouse

如果您必须重写或移动大量数据,将 Delta Lake 表迁移到 Lakehouse for Apache Iceberg 可能会非常复杂且成本高昂。如需在 Lakehouse 中提供 Delta Lake 数据,而无需移动或重写底层文件,您可以使用 Dataflow 作业构建器。作业构建器提供了一个低代码或无代码界面,可将 Cloud Storage Delta Lake 表直接导入到 Lakehouse 中。

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

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

准备工作

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

  1. 启用 Dataflow、BigQuery 和 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 表数据导入到适用于 Apache Iceberg 的 Lakehouse 时,存在以下限制:

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

导入 Delta Lake 表

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

  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. 接收器部分中:

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

    2. 点击完成

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

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

检查作业输出

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

  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. 查看查询结果,确保数据已正确处理。

后续步骤