Spanner to Cloud Storage Avro 模板

Spanner to Avro Files on Cloud Storage 模板是一种批处理流水线,可将整个 Spanner 数据库以 Avro 格式导出到 Cloud Storage。导出 Spanner 数据库会在您选择的存储桶中创建一个文件夹。该文件夹包含以下内容:

  • spanner-export.json 文件。
  • 您导出的数据库中每个表的 TableName-manifest.json 文件。
  • 一个或多个 TableName.avro-#####-of-##### 文件。

例如,如果导出包含两个表 SingersAlbums 的数据库,则系统会创建以下文件集:

  • Albums-manifest.json
  • Albums.avro-00000-of-00002
  • Albums.avro-00001-of-00002
  • Singers-manifest.json
  • Singers.avro-00000-of-00003
  • Singers.avro-00001-of-00003
  • Singers.avro-00002-of-00003
  • spanner-export.json

流水线要求

  • Spanner 数据库必须已存在。
  • Cloud Storage 输出存储桶必须存在。
  • 除了运行 Dataflow 作业所需的 Identity and Access Management (IAM) 角色之外,您还必须具有读取 Spanner 数据并写入 Cloud Storage 存储桶的适当 IAM 角色

模板参数

参数 说明
instanceId 您要导出的 Spanner 数据库的实例 ID。
databaseId 您要导出的 Spanner 数据库的数据库 ID。
outputDir 您期望的 Avro 文件导出位置的 Cloud Storage 路径。导出作业在此路径下创建一个包含导出文件的新目录。
snapshotTime (可选)与您要读取的 Spanner 数据库版本对应的时间戳。时间戳必须按照 RFC 3339 世界协调时间 (UTC)(即“祖鲁时”)格式指定。例如 1990-12-31T23:59:60Z。时间戳必须是过去的时间,并且必须遵循时间戳过时上限
shouldExportTimestampAsLogicalType (可选)如果为 true,则时间戳将导出为 long 类型以及 timestamp-micros 逻辑类型。默认情况下,时间戳以纳秒精度导出为 ISO-8601 字符串。
tableNames (可选)英文逗号分隔列表,指定要导出的 Spanner 数据库子集。如果设置此参数,则必须添加所有相关表(父表和外键引用的表),或者将 shouldExportRelatedTables 参数设置为 true
shouldExportRelatedTables (可选)指定是否包含相关表。此参数与 tableNames 参数搭配使用。
spannerProjectId (可选)您要从中读取数据的 Spanner 数据库的 Google Cloud 项目 ID。
dataBoostEnabled (可选)设置为 true 可使用 Spanner Data Boost 的计算资源运行作业,且对 Spanner OLTP 工作流的影响接近于零。 这需要 spanner.databases.useDataBoost IAM 权限。如需了解详情,请参阅 Data Boost 概览
avroTempDirectory (可选)写入临时 Avro 文件的 Cloud Storage 路径。
spannerPriority (可选)Spanner 调用的请求优先级。可能的值包括:HIGHMEDIUMLOW。默认值为 MEDIUM

运行模板

控制台

  1. 转到 Dataflow 基于模板创建作业页面。
  2. 转到“基于模板创建作业”
  3. 作业名称字段中,输入唯一的作业名称。

    作业名称必须与以下格式匹配,作业才会显示在 Google Cloud 控制台的 Spanner 实例页面中:

    cloud-spanner-export-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    替换以下内容:

    • SPANNER_INSTANCE_ID:Spanner 实例的 ID
    • SPANNER_DATABASE_NAME:Spanner 数据库的名称
  4. 可选:对于区域性端点,从下拉菜单中选择一个值。默认区域为 us-central1

    如需查看可以在其中运行 Dataflow 作业的区域列表,请参阅 Dataflow 位置

  5. Dataflow 模板下拉菜单中,选择 the Cloud Spanner to Avro Files on Cloud Storage template。
  6. 在提供的参数字段中,输入您的参数值。
  7. 点击运行作业

gcloud

在 shell 或终端中,运行模板:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_Spanner_to_GCS_Avro \
    --region REGION_NAME \
    --staging-location GCS_STAGING_LOCATION \
    --parameters \
instanceId=INSTANCE_ID,\
databaseId=DATABASE_ID,\
outputDir=GCS_DIRECTORY

请替换以下内容:

  • JOB_NAME:您选择的唯一性作业名称

    作业名称必须与 cloud-spanner-export-INSTANCE_ID-DATABASE_ID 格式匹配,作业才会显示在 Google Cloud 控制台的 Spanner 部分中。

  • VERSION:您要使用的模板的版本

    您可使用以下值:

  • REGION_NAME:要在其中部署 Dataflow 作业的区域,例如 us-central1
  • GCS_STAGING_LOCATION:写入临时文件的位置;例如 gs://mybucket/temp
  • INSTANCE_ID:Spanner 实例 ID
  • DATABASE_ID:Spanner 数据库 ID
  • GCS_DIRECTORY:Avro 文件导出到

API

如需使用 REST API 来运行模板,请发送 HTTP POST 请求。如需详细了解 API 及其授权范围,请参阅 projects.templates.launch

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Cloud_Spanner_to_GCS_Avro
{
   "jobName": "JOB_NAME",
   "parameters": {
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "outputDir": "gs://GCS_DIRECTORY"
   }
}

请替换以下内容:

  • PROJECT_ID:您要在其中运行 Dataflow 作业的 Google Cloud 项目的 ID
  • JOB_NAME:您选择的唯一性作业名称

    作业名称必须与 cloud-spanner-export-INSTANCE_ID-DATABASE_ID 格式匹配,作业才会显示在 Google Cloud 控制台的 Spanner 部分中。

  • VERSION:您要使用的模板的版本

    您可使用以下值:

  • LOCATION:要在其中部署 Dataflow 作业的区域,例如 us-central1
  • GCS_STAGING_LOCATION:写入临时文件的位置;例如 gs://mybucket/temp
  • INSTANCE_ID:Spanner 实例 ID
  • DATABASE_ID:Spanner 数据库 ID
  • GCS_DIRECTORY:Avro 文件导出到

后续步骤