La plantilla de Spanner a archivos Avro en Cloud Storage es una canalización por lotes que exporta una base de datos de Spanner completa a Cloud Storage en formato Avro. Al exportar una base de datos de Spanner, se crea una carpeta en el segmento que selecciones. La carpeta contiene lo siguiente:
- Un archivo
spanner-export.json
. - Un archivo
TableName-manifest.json
por cada tabla de la base de datos que hayas exportado. - Uno o varios archivos
TableName.avro-#####-of-#####
.
Por ejemplo, si exporta una base de datos con dos tablas, Singers
y Albums
, se creará el siguiente conjunto de archivos:
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
Requisitos del flujo de procesamiento
- La base de datos de Spanner debe existir.
- El segmento de Cloud Storage de salida debe existir.
- Además de los roles de gestión de identidades y accesos (IAM) necesarios para ejecutar trabajos de Dataflow, también debes tener los roles de IAM adecuados para leer tus datos de Spanner y escribir en tu segmento de Cloud Storage.
Parámetros de plantilla
Parámetros obligatorios
- instanceId el ID de instancia de la base de datos de Spanner que quiere exportar.
- databaseId el ID de la base de datos de Spanner que quieres exportar.
- outputDir: ruta de Cloud Storage a la que se exportarán los archivos Avro. El trabajo de exportación crea un directorio en esta ruta que contiene los archivos exportados. Por ejemplo,
gs://your-bucket/your-path
.
Parámetros opcionales
- avroTempDirectory: la ruta de Cloud Storage en la que se escriben los archivos Avro temporales.
- spannerHost el endpoint de Cloud Spanner al que se llama en la plantilla. Solo se usa para hacer pruebas. Por ejemplo,
https://batch-spanner.googleapis.com
. El valor predeterminado es https://batch-spanner.googleapis.com. - snapshotTime la marca de tiempo que corresponde a la versión de la base de datos de Spanner que quieres leer. La marca de tiempo debe especificarse con el formato RFC 3339 UTC
Zulu
. La marca de tiempo debe ser anterior a la actual y se aplica la obsolescencia máxima de la marca de tiempo. Por ejemplo,1990-12-31T23:59:60Z
. El valor predeterminado es una cadena vacía. - spannerProjectId el ID del proyecto de Google Cloud que contiene la base de datos de Spanner de la que quieres leer datos.
- shouldExportTimestampAsLogicalType si es
true
, las marcas de tiempo se exportan como un tipolong
con el tipo lógicotimestamp-micros
. De forma predeterminada, este parámetro tiene el valorfalse
y las marcas de tiempo se exportan como cadenas ISO-8601 con una precisión de nanosegundos. - tableNames lista de tablas separadas por comas que especifica el subconjunto de la base de datos de Spanner que se va a exportar. Si define este parámetro, debe incluir todas las tablas relacionadas (tablas principales y tablas a las que se hace referencia con claves externas) o definir el parámetro
shouldExportRelatedTables
comotrue
.Si la tabla está en un esquema con nombre, utilice el nombre completo. Por ejemplo:sch1.foo
, dondesch1
es el nombre del esquema yfoo
es el nombre de la tabla. El valor predeterminado es una cadena vacía. - shouldExportRelatedTables indica si se deben incluir las tablas relacionadas. Este parámetro se usa junto con el parámetro
tableNames
. Valor predeterminado: false. - spannerPriority la prioridad de la solicitud para las llamadas de Spanner. Los valores posibles son
HIGH
,MEDIUM
yLOW
. El valor predeterminado esMEDIUM
. - dataBoostEnabled asigna el valor
true
para usar los recursos de computación de Spanner Data Boost y ejecutar el trabajo con un impacto casi nulo en los flujos de trabajo de OLTP de Spanner. Si se define comotrue
, también necesitas el permiso de gestión de identidades y accesosspanner.databases.useDataBoost
. Para obtener más información, consulta la descripción general de Data Boost (https://cloud.google.com/spanner/docs/databoost/databoost-overview). Valor predeterminado: false.
Ejecutar la plantilla
Consola
- Ve a la página Crear tarea a partir de plantilla de Dataflow. Ir a Crear tarea a partir de plantilla
- En el campo Nombre de la tarea, introduce un nombre único.
- Opcional: En Endpoint regional, seleccione un valor en el menú desplegable. La región predeterminada es
us-central1
.Para ver una lista de las regiones en las que puedes ejecutar una tarea de Dataflow, consulta Ubicaciones de Dataflow.
- En el menú desplegable Plantilla de flujo de datos, seleccione the Cloud Spanner to Avro Files on Cloud Storage template.
- En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
- Haz clic en Ejecutar trabajo.
gcloud
En este ejemplo se usa el comando
gcloud dataflow jobs run
.
En tu shell o terminal, ejecuta la plantilla:
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'
Haz los cambios siguientes:
JOB_NAME
: un nombre de trabajo único que elijasPara que el trabajo se muestre en la parte de Spanner de la Google Cloud consola, el nombre del trabajo debe tener el formato
cloud-spanner--INSTANCE_ID-DATABASE_ID
.VERSION
: la versión de la plantilla que quieres usarPuedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/- el nombre de la versión, como
2023-09-12-00_RC00
, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
REGION_NAME
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
GCS_STAGING_LOCATION
: la ruta para escribir archivos temporales; por ejemplo,gs://mybucket/temp
INSTANCE_ID
: el ID de tu instancia de SpannerDATABASE_ID
: tu ID de base de datos de SpannerGCS_DIRECTORY
: la ruta de Cloud Storage a la que se o desde la que seimportan los archivos Avro.
API
Para ejecutar la plantilla mediante la API REST, envía una solicitud HTTP POST. Para obtener más información sobre la API y sus ámbitos de autorización, consulta 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" } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de DataflowJOB_NAME
: un nombre de trabajo único que elijasPara que el trabajo se muestre en la parte de Spanner de la Google Cloud consola, el nombre del trabajo debe tener el formato
cloud-spanner--INSTANCE_ID-DATABASE_ID
.VERSION
: la versión de la plantilla que quieres usarPuedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/- el nombre de la versión, como
2023-09-12-00_RC00
, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
LOCATION
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
GCS_STAGING_LOCATION
: la ruta para escribir archivos temporales; por ejemplo,gs://mybucket/temp
INSTANCE_ID
: el ID de tu instancia de SpannerDATABASE_ID
: tu ID de base de datos de SpannerGCS_DIRECTORY
: la ruta de Cloud Storage a la que se o desde la que seimportan los archivos Avro.
Siguientes pasos
- Consulta información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas proporcionadas por Google.