导出作业采用存储在 Dataproc Metastore 服务中的元数据,并返回包含 Avro 文件的文件夹或 Cloud Storage 文件夹中的 MySQL 转储文件。对于 Avro 导出,Dataproc Metastore 会为每个表创建一个 <table-name>.avro
文件。2.3.6 版和 3.1.2 版支持基于 Avro 的导出。
本页面介绍了如何从现有的 Dataproc Metastore 服务导出元数据。
准备工作
- 大多数
gcloud metastore
命令需要位置信息。您可以使用--location
标志指定位置,也可以通过设置默认位置来指定位置。
访问权限控制
如需导出元数据,您必须请求具有
metastore.services.export
IAM 权限的 IAM 角色。Dataproc Metastore 的特定角色roles/metastore.admin
、roles/metastore.editor
和roles/metastore.metadataOperator
具有导出权限。您也可以使用
roles/owner
和roles/editor
旧版角色向用户或群组授予导出权限。Dataproc Metastore 服务代理 (
service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com
) 必须具有用于导出操作的 Cloud Storage 存储桶目的地的storage.objects.create
权限。- 创建导出操作的用户还必须具有该存储分区的
storage.objects.create
权限。
- 创建导出操作的用户还必须具有该存储分区的
如果您使用的是 VPC Service Controls,则只能将数据导出到与 Dataproc Metastore 服务位于同一服务边界内的 Cloud Storage 存储分区。
如需了解详情,请参阅 Dataproc Metastore IAM 和访问权限控制。
从服务导出元数据
如需从服务导出元数据,请在本地浏览器中打开的服务详情页面上选择导出目标位置,然后使用 gcloud
CLI,或发出 Dataproc Metastore API 方法 services.exportMetadata。
在导出操作处于运行状态时,系统无法对服务进行更新。执行导出操作时,您仍可以使用服务。
如需从 Dataproc Metastore 服务导出元数据,请完成以下步骤:
控制台
在 Cloud Console 中,打开 Dataproc Metastore 页面:
在 Dataproc Metastore 页面上,点击您要从中导出元数据的服务的名称。服务详细信息页面会打开。
点击页面顶部的导出按钮。导出元数据页面会打开。
选择目标位置。
浏览到并选择您希望存储导出的元数据的 Cloud Storage URI。
点击提交按钮开始执行导出操作。
确认您已返回服务详细信息页面,并且您的导出操作显示在导入/导出标签页中的导出历史记录下方。
gcloud
运行以下
gcloud metastore services export gcs
命令以从服务导出元数据:gcloud metastore services export gcs SERVICE \ --location=LOCATION \ --destination-folder=gs://bucket-name/path/to/folder \ --dump-type=DUMP_TYPE
替换以下内容:
SERVICE
:服务的名称。LOCATION
:表示 Google Cloud 区域。bucket-name/path/to/folder
:表示 Cloud Storage 目的地文件夹。DUMP_TYPE
:数据库转储的类型。默认值为mysql
。
验证导出操作是否成功。
REST
按照 API 说明使用 API Explorer 将元数据导出到服务。
导出操作完成后,无论是否成功,服务都会自动进入活跃状态。
如需查看服务的导出历史记录,请参阅 Cloud Console 中服务详细信息页面上的导入/导出标签页。
导出注意事项
2.3.6 版和 3.1.2 版支持基于 Avro 的导出。
界面中提供了以前的导出历史记录。如果您删除服务本身,则系统会删除该服务下的所有导出历史记录。
常见的失败情况
Dataproc Metastore 服务代理 (
service-CUSTOMER_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com
) 没有用于 Avro 或 MySQL 转储文件的 Cloud Storage 存储桶的storage.objects.create
权限。- 创建导出操作的用户没有该存储分区的
storage.objects.create
权限。
- 创建导出操作的用户没有该存储分区的
您的数据库文件太大,需要超过一个小时才能完成导出过程。