本页介绍了如何将元数据导入 Dataproc Metastore 服务。
借助“导入元数据”功能,您可以使用以便携式存储格式存储的元数据填充现有 Dataproc Metastore 服务。
这种可移植元数据通常从其他 Dataproc Metastore 服务或自行管理的 Hive Metastore (HMS) 导出。
关于导入元数据
您可以将以下文件格式导入 Dataproc Metastore:
- 存储在文件夹中的一组 Avro 文件。
- 存储在 Cloud Storage 文件夹中的单个 MySQL 转储文件。
您要导入的 MySQL 或 Avro 文件必须从关系型数据库生成。
如果您的文件采用其他格式(例如 PostgreSQL),则必须先将其转换为 Avro 或 MySQL 格式。转换完成后,您可以将其导入 Dataproc Metastore。
Avro
只有 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 Editor (
roles/metastore.editor
)。 -
项目的 Dataproc Metastore 管理员 (
roles/metastore.admin
)。
-
元数据服务上的 Dataproc Metastore Editor (
-
对于 MySQL,如需使用 Cloud Storage 对象(SQL 转储文件)进行导入,请执行以下操作:
向包含要导入的元数据转储文件的 Cloud Storage 存储桶授予您的用户账号和 Dataproc Metastore 服务代理 Storage Object Viewer 角色 (
roles/storage.objectViewer
)。 -
对于 Avro,如需使用 Cloud Storage 存储桶进行导入,请执行以下操作:
向包含要导入的元数据转储的 Cloud Storage 存储桶授予 Storage Object Viewer 角色 (
roles/storage.objectViewer
) 给您的用户账号和 Dataproc Metastore 服务代理。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色包含将元数据导入 Dataproc Metastore 所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需将元数据导入 Dataproc Metastore,您需要具备以下权限:
-
如需导入元数据,请执行以下操作:
metastore.imports.create
在 Metastore 服务中。 -
对于 MySQL,如需使用 Cloud Storage 对象(SQL 转储文件)进行导入,请向您的用户账号和 Dataproc Metastore 服务代理授予对包含要导入的元数据转储文件的 Cloud Storage 存储桶的
storage.objects.get
权限。 -
对于 Avro,如需使用 Cloud Storage 存储桶进行导入,请向您的用户账号和 Dataproc Metastore 服务代理授予对包含要导入的元数据转储的 Cloud Storage 存储桶的
storage.objects.get
权限。
导入元数据
导入操作分为两步。首先,您需要准备导入文件,然后将其导入 Dataproc Metastore。
当您开始导入时,Dataproc Metastore 会执行 Hive 元数据架构验证。此验证会验证 SQL 转储表中的表和 Avro 的文件名。如果缺少表,导入操作会失败,并显示描述缺失表的错误消息。
如需在导入前检查 Hive 元数据兼容性,您可以使用 Dataproc Metastore Toolkit。
在导入前准备导入文件
您必须先将元数据转储文件复制到 Cloud Storage(例如工件 Cloud Storage 存储桶),然后才能将文件导入 Dataproc Metastore。
将文件移至 Cloud Storage
创建要导入 Dataproc Metastore 的外部数据库的数据库转储。
如需了解如何创建数据库转储,请参阅以下页面:
将文件上传到 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 或自行管理的集群访问其元数据。
控制台
在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:
在 Dataproc Metastore 页面上,点击要向其中导入元数据的服务的名称。
服务详细信息页面会打开。
在导航栏中,点击导入。
系统随即会打开 Import 对话框。
输入导入名称。
在目标位置部分,选择 MySQL 或 Avro。
在目标 URI 字段中,点击浏览,然后选择要将文件导入到的 Cloud Storage URI。
您也可以在提供的文本字段中手动输入存储桶位置。请使用以下格式:
bucket/object
或bucket/folder/object
。可选:输入导入操作的说明。
您可以在服务详情页面上修改说明。
如需更新服务,请点击导入。
导入完成后,导入操作会显示在服务详细信息页面上的导入/导出标签页中的一个表格中。
gcloud CLI
如需导入元数据,请运行以下
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
:要导入的外部数据库的类型。可接受的值包括mysql
和avro
。默认值为mysql
。DATABASE_DUMP
:包含数据库文件的 Cloud Storage 的路径。此路径必须以gs://
开头。对于 Avro,请提供存储 Avro 文件的文件夹(Cloud Storage 文件夹)的路径。对于 MySQL,请提供 MySQL 文件(Cloud Storage 对象)的路径。
验证导入操作是否成功。
REST
按照 API 说明使用 APIs Explorer 将元数据导入到服务中。
使用该 API,您可以创建、列出、描述和更新导入操作,但不能删除导入操作。不过,如果您删除 Dataproc Metastore 服务,则系统会删除所有存储的嵌套导入操作。
导入成功后,Dataproc Metastore 会自动返回活跃状态。如果导入失败,Dataproc Metastore 会回滚到之前的正常状态。
查看导入作业历史记录
如需在 Google Cloud 控制台中查看 Dataproc Metastore 服务的导入历史记录,请完成以下步骤:
- 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面。
在导航栏中,点击导入/导出。
您的导入历史记录会显示在导入历史记录表格中。
历史记录最多显示最近的 25 项导入操作。
删除 Dataproc Metastore 服务也会删除所有关联的导入历史记录。
排查常见问题
常见问题包括:
如需有关解决常见问题排查问题的更多帮助,请参阅导入和导出错误场景。