借助 Dataflow 作业构建器,您可以通过低代码或无代码界面将 Cloud Storage Delta Lake 表直接导入无边界 Lakehouse,从而降低大规模数据迁移的复杂性。自动扩缩的 Dataflow 批量作业会将数据复制到 Lakehouse 中的目标 Apache Iceberg 表,并自动为新表创建架构,而现有表则需要匹配的架构。
导入数据后,您可以选择启用持续迁移。
准备工作
如需导入 Delta Lake 表数据,您需要满足以下条件:
启用 Dataflow、BigQuery 和 Lakehouse API(如果尚未启用)。
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 拥有此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。如需获得创建资源所需的权限,请让管理员向您授予项目的所需 Identity and Access Management (IAM) 角色。
存储在 Cloud Storage 存储桶中的现有 Delta Lake 表。表目录必须是有效的 Delta Lake 表根目录,其中包含 Parquet 数据文件和
_delta_log/事务日志目录。要将数据导入到的 Lakehouse Iceberg 目录、命名空间和表。
支持和限制
使用 Dataflow 将 Delta Lake 表数据导入 Lakehouse 具有以下限制:
- 您必须使用批量流水线作业才能使用此功能。
- 对于现有目标表,系统不会修改其架构。目标表架构必须正确映射到源 Delta Lake 表架构。
- 源数据必须是存储在 Cloud Storage 中的有效 Delta Lake 表。表根目录必须包含 Parquet 数据文件和 Delta Lake 创建的
_delta_log/事务日志目录(包含 JSON 或 Parquet 日志文件)。 - Delta Lake 表源不支持 Amazon S3。
导入 Delta Lake 表
如需将 Delta Lake 表导入 Lakehouse,请完成以下步骤:
在 Google Cloud 控制台中,前往 Lakehouse 运行时目录页面。
选择要将数据导入到的目录、命名空间和表。
在表详情页面上,点击 导入表,然后选择从 Delta Lake(批量)。
系统会打开 Dataflow 作业构建器页面,并加载 Delta Lake to Lakehouse 蓝图。
在来源部分中:
如需展开 ReadFromDeltaLake Delta Lake 表来源面板,请点击 展开箭头。
在表路径字段中,输入 Delta Lake 表根目录(包含数据文件和
_delta_log/目录的目录)的 Cloud Storage URI。例如gs://BUCKET_NAME/tables/TABLE_NAME。可选:在 Hadoop 配置属性字段中,配置从 Cloud Storage 读取数据所需的任何其他 Hadoop 配置属性。例如:
fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem。点击完成。
在接收器部分中:
可选:查看 WriteToIceberg Lakehouse 表接收器面板。此面板中的信息(例如 Lakehouse 表、目录名称和仓库位置)通常会预先填充。
点击完成。
在 Dataflow 选项部分中,点击运行作业。
如果您需要进一步自定义用于导入 Delta Lake 表的 Dataflow 流水线,可以使用作业构建器表单或 YAML 编辑器。
检查作业输出
作业完成后,您可以在 BigQuery 中查询数据,以验证数据是否已复制到 Lakehouse 表。
在 Dataflow 作业列表中,检查作业状态是否为成功。
如果作业失败或出现错误,请查看作业日志或工作器日志了解详情。
在 Google Cloud 控制台中,前往 BigQuery Studio 页面。
在查询编辑器中,输入 SQL 查询以检查表。您可以使用
PROJECT_ID.CATALOG.NAMESPACE.TABLE_NAME惯例来查询:SELECT * FROM `PROJECT_ID`.`CATALOG`.`NAMESPACE`.`TABLE_NAME` LIMIT 10;点击 运行。
查看查询结果,确保数据已正确处理。
可选。启用持续迁移
如需设置从 Delta Lake 到 Lakehouse 的端到端持续迁移,请完成以下一系列操作:
- 在输入 Delta Lake 表上启用
delta.enableChangeDataFeed属性。 - 设置
delta.enableChangeDataFeed属性后,执行初始表迁移到提交 ID 或时间戳。 - 根据工作负载要求选择的频率(提交 ID 或时间戳范围),为后续数据运行预定的 CDC 作业。
如需了解详情,请参阅使用 Dataflow 将 Delta Lake 变更数据捕获 (CDC) 数据迁移到 Lakehouse。
后续步骤
- 如需了解详情,请参阅 BigQuery 中适用于 Apache Iceberg 的 Lakehouse 表简介。
- 详细了解如何定期将 Delta Lake CDC 数据迁移到 Lakehouse。
- 了解 Lakehouse 中的变更数据捕获注入。
- 详细了解如何通过作业构建器界面创建自定义作业。