将元数据导入 Dataproc Metastore

本页面介绍了如何将元数据导入 Dataproc Metastore 服务。

通过导入元数据功能,您可以使用以便携式存储格式存储的元数据来填充现有的 Dataproc Metastore 服务。

此可移植的元数据通常从其他 Dataproc Metastore 服务或自行管理的 Hive Metastore (HMS) 导出。

关于导入元数据

您可以将以下文件格式导入 Dataproc Metastore:

  • 存储在文件夹中的一组 Avro 文件。
  • 存储在 Cloud Storage 文件夹中的单个 MySQL 转储文件。

您要导入的 MySQL 或 Avro 文件必须从关系型数据库生成。

如果您的文件采用其他格式(例如 PostgreSQL),您必须将其转换为 Avro 或 MySQL 格式。转换后,您可以将它们导入 Dataproc Metastore。

Avro

只有 Hive 版本 2.3.6 和 3.1.2 支持基于 Avro 的导入。导入 Avro 文件时,Dataproc Metastore 希望数据库中的每个表都有一系列 <table-name>.avro 文件。

如需导入 Avro 文件,Dataproc Metastore 服务可以使用 MySQL 或 Spanner 数据库类型。

MySQL

所有 Hive 版本都支持基于 MySQL 的导入。导入 MySQL 文件时,Dataproc Metastore 需要单个包含所有表信息的 SQL 文件。也支持使用原生 SQL 从 Dataproc 集群获取的 MySQL 转储。

如需导入 MySQL 文件,您的 Dataproc Metastore 服务必须使用 MySQL 数据库类型。Spanner 数据库类型不支持 MySQL 导入。

导入注意事项

  • 导入操作会覆盖存储在 Dataproc Metastore 服务中的所有现有元数据。

  • 元数据导入功能仅导入元数据。导入过程中不会复制由 Apache Hive 在内部表中创建的数据。

  • 导入操作不会转换数据库内容,也不会处理文件迁移。如果将数据移至其他位置,则必须在 Dataproc Metastore 服务中手动更新表数据位置和架构。

  • 导入操作不会恢复或替换精细的 IAM 政策。

  • 如果您使用的是 VPC Service Controls,则只能从与 Dataproc Metastore 服务位于同一服务边界内的 Cloud Storage 存储桶导入数据。

准备工作

所需的角色

如需获取将元数据导入 Dataproc Metastore 所需的权限,请让管理员向您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理访问权限

这些预定义角色包含将元数据导入 Dataproc Metastore 所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需将元数据导入 Dataproc Metastore,需要具备以下权限:

  • 如需导入元数据,请在 Metastore 服务中使用 metastore.imports.create
  • 对于 MySQL,如需使用 Cloud Storage 对象(SQL 转储文件)进行导入,请向您的用户帐号和 Dataproc Metastore 服务代理授予 storage.objects.get(位于包含要导入的元数据转储的 Cloud Storage 存储桶中)。
  • 对于 Avro,如需使用 Cloud Storage 存储桶进行导入,请向您的用户帐号和 Dataproc Metastore 服务代理授予 storage.objects.get(对包含要导入的元数据转储的 Cloud Storage 存储桶的权限)。

您也可以使用自定义角色或其他预定义角色来获取这些权限。

如需详细了解特定的 Dataproc Metastore 角色和权限,请参阅 Dataproc Metastore IAM 概览

导入元数据

导入操作包含两步。首先,准备导入文件,然后将其导入 Dataproc Metastore。

当您开始导入时,Dataproc Metastore 会执行 Hive 元数据架构验证。此验证会验证 SQL 转储文件中的表和 Avro 的文件名。如果表缺失,导入将失败,并显示描述缺失表的错误消息。

如需在导入之前检查 Hive 元数据兼容性,您可以使用 Dataproc Metastore 工具包

导入前准备导入文件

您必须先将元数据转储文件(例如工件 Cloud Storage 存储桶)复制到 Cloud Storage,然后才能将文件导入 Dataproc Metastore。

将文件移动到 Cloud Storage

  1. 为要导入 Dataproc Metastore 的外部数据库创建数据库转储。

    如需了解如何创建数据库转储,请参阅以下页面:

  2. 将文件上传到 Cloud Storage。

    请务必记下您用来上传文件的 Cloud Storage 路径,您稍后需要使用该路径执行导入。

    • 如果您要导入 MySQL 文件,请将 SQL 文件上传到 Cloud Storage 存储桶

    • 如果您要导入 Avro 文件,请将文件上传到 Cloud Storage 文件夹

      • 您的 Avro 导入文件应包含每个 Hive 表的 Avro 文件,即使该表为空也是如此。
      • Avro 文件名必须遵循格式 <table-name>.avro<table-name> 必须全部大写。例如 AUX_TABLE.avro

将文件导入 Dataproc Metastore

在导入元数据之前,请查看导入注意事项

在导入过程中,您无法更新 Dataproc Metastore 服务,例如更改配置设置。但是,您仍然可以使用它执行正常操作,例如使用它从关联的 Dataproc 或自行管理的集群访问其元数据。

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:

    打开 Dataproc Metastore

  2. Dataproc Metastore 页面上,点击要向其中导入元数据的服务的名称。

    服务详细信息页面会打开。

    “服务详细信息”页面
    图 1.Dataproc Metastore 服务详情页面。
  3. 在导航栏中,点击导入

    系统随即会打开 Import 对话框。

  4. 输入导入名称

  5. 目标部分中,选择 MySQLAvro

  6. 目标 URI 字段中,点击浏览,然后选择要向其中导入文件的 Cloud Storage URI

    您还可以在提供的文本字段中输入存储桶位置。请使用以下格式:bucket/objectbucket/folder/object

  7. 可选:输入导入内容的说明

    您可以在服务详情页面上修改说明。

  8. 如需更新服务,请点击导入

    导入完成后,相应导入会显示在服务详情页面的导入/导出标签页上的表格中。

gcloud CLI

  1. 如需导入元数据,请运行以下 gcloud metastore services import gcs 命令:

    gcloud metastore services import gcs SERVICE_ID \
      --location=LOCATION \
      --import-id=IMPORT_ID \
      --description=DESCRIPTION \
      --dump-type=DUMP_TYPE \
      --database-dump=DATABASE_DUMP
    

    替换以下内容:

    • SERVICE_ID:您的 Dataproc Metastore 服务的 ID 或完全限定名称。
    • LOCATION:您的 Dataproc Metastore 服务所在的 Google Cloud 区域。
    • IMPORT_ID:元数据导入的 ID 或完全限定名称。例如 import1
    • DESCRIPTION(可选):导入的说明。您稍后可以使用 gcloud metastore services imports update IMPORT 进行修改。
    • DUMP_TYPE:要导入的外部数据库的类型。接受的值包括 mysqlavro。默认值为 mysql
    • DATABASE_DUMP:包含数据库文件的 Cloud Storage 的路径。此路径必须以 gs:// 开头。对于 Avro,请提供存储 Avro 文件的文件夹(Cloud Storage 文件夹)的路径。对于 MySQL,请提供 MySQL 文件的路径(Cloud Storage 对象)。
  2. 验证导入操作是否成功。

REST

按照 API 说明使用 APIs Explorer 将元数据导入到服务中

使用 API,您可以创建、列出、描述和更新导入,但不能删除导入。但是,删除 Dataproc Metastore 服务会删除所有存储的嵌套导入。

导入成功后,Dataproc Metastore 会自动返回到活跃状态。如果导入失败,Dataproc Metastore 将回滚到之前的正常运行状态。

查看导入作业历史记录

如需在 Google Cloud 控制台中查看 Dataproc Metastore 服务的导入历史记录,请完成以下步骤:

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面。
  2. 在导航栏中,点击导入/导出

    您的导入历史记录会显示在导入历史记录表格中。

    历史记录最多可显示最近的 25 次导入。

删除 Dataproc Metastore 服务会同时删除所有关联的导入历史记录。

排查常见问题

以下是一些常见问题:

如需获得有关解决常见问题排查问题的更多帮助,请参阅导入和导出错误场景

后续步骤