Plantilla de Avro de Cloud Storage a Spanner

La plantilla de archivos de Avro de Cloud Storage a Spanner es una canalización por lotes que lee archivos de Avro exportados de Spanner y almacenados en Cloud Storage, y los importa a una base de datos de Spanner.

Requisitos del flujo de procesamiento

  • La base de datos de Spanner de destino debe existir y estar vacía.
  • Debes tener permisos de lectura para el segmento de Cloud Storage y permisos de escritura para la base de datos de Spanner de destino.
  • La ruta de Cloud Storage de entrada debe existir e incluir un archivo spanner-export.json que contenga una descripción JSON de los archivos que se van a importar.
  • Si el archivo Avro de origen no contiene una clave principal, debes crear una tabla de Spanner vacía con una clave principal antes de ejecutar la plantilla. Este paso no es obligatorio si el archivo Avro define la clave principal.

Parámetros de plantilla

Parámetros obligatorios

  • instanceId ID de instancia de la base de datos de Spanner.
  • databaseId el ID de la base de datos de Spanner.
  • inputDir: ruta de Cloud Storage desde la que se importan los archivos Avro.

Parámetros opcionales

  • 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.
  • waitForIndexes si es true, la canalización espera a que se creen los índices. Si false, el trabajo puede completarse mientras se siguen creando índices en segundo plano. El valor predeterminado es false.
  • waitForForeignKeys si es true, la canalización espera a que se creen las claves externas. Si false, el trabajo puede completarse mientras se siguen creando claves externas en segundo plano. El valor predeterminado es false.
  • waitForChangeStreams si es true, la canalización espera a que se creen los flujos de cambios. Si false, es posible que la tarea se complete mientras se siguen creando flujos de cambios en segundo plano. El valor predeterminado es true.
  • waitForSequences de forma predeterminada, la canalización de importación se bloquea en la creación de secuencias. Si false, es posible que el flujo de importación se complete mientras se siguen creando secuencias en segundo plano.
  • earlyIndexCreateFlag especifica si la creación de índices anticipada está habilitada. Si la plantilla ejecuta un gran número de instrucciones DDL, es más eficiente crear índices antes de cargar los datos. Por lo tanto, el comportamiento predeterminado es crear los índices primero cuando el número de instrucciones DDL supera un umbral. Para inhabilitar esta función, asigne el valor false a earlyIndexCreateFlag. El valor predeterminado es true.
  • spannerProjectId el ID del proyecto de Google Cloud que contiene la base de datos de Spanner. Si no se define, se usará el proyecto de Google Cloud predeterminado.
  • ddlCreationTimeoutInMinutes tiempo de espera en minutos de las instrucciones DDL realizadas por la plantilla. El valor predeterminado es de 30 minutos.
  • spannerPriority la prioridad de la solicitud para las llamadas de Spanner. Los valores posibles son HIGH, MEDIUM y LOW. El valor predeterminado es MEDIUM.
  • earlyIndexCreateThreshold umbral del número de índices y claves externas que determina si se deben crear índices antes de cargar los datos. Si el número total de índices y claves externas es superior a este umbral, se crearán antes de importar los datos para mejorar el rendimiento. El valor predeterminado es 40.

Ejecutar la plantilla

Consola

  1. Ve a la página Crear tarea a partir de plantilla de Dataflow.
  2. Ir a Crear tarea a partir de plantilla
  3. En el campo Nombre de la tarea, introduce un nombre único.

    Para que el trabajo aparezca en la página Instancias de Spanner de la consola Google Cloud , el nombre del trabajo debe tener el siguiente formato:

    cloud-spanner-import-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    Haz los cambios siguientes:

    • SPANNER_INSTANCE_ID: ID de tu instancia de Spanner
    • SPANNER_DATABASE_NAME: el nombre de tu base de datos de Spanner
  4. 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.

  5. En el menú desplegable Plantilla de flujo de datos, seleccione the Avro Files on Cloud Storage to Cloud Spanner template.
  6. En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
  7. Haz clic en Ejecutar trabajo.

gcloud

En tu shell o terminal, ejecuta la plantilla:

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

Haz los cambios siguientes:

  • JOB_NAME: un nombre de trabajo único que elijas
  • VERSION: la versión de la plantilla que quieres usar

    Puedes 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
  • INSTANCE_ID: el ID de la instancia de Spanner que contiene la base de datos
  • DATABASE_ID: el ID de la base de datos de Spanner a la que se va a importar
  • GCS_DIRECTORY: la ruta de Cloud Storage desde la que se importan los archivos Avro. Por ejemplo, gs://mybucket/somefolder

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/GCS_Avro_to_Cloud_Spanner
{
   "jobName": "JOB_NAME",
   "parameters": {
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "inputDir": "gs://GCS_DIRECTORY"
   },
   "environment": {
       "machineType": "n1-standard-2"
   }
}

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de Dataflow
  • JOB_NAME: un nombre de trabajo único que elijas
  • VERSION: la versión de la plantilla que quieres usar

    Puedes 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
  • INSTANCE_ID: el ID de la instancia de Spanner que contiene la base de datos
  • DATABASE_ID: el ID de la base de datos de Spanner a la que se va a importar
  • GCS_DIRECTORY: la ruta de Cloud Storage desde la que se importan los archivos Avro. Por ejemplo, gs://mybucket/somefolder

Siguientes pasos