La plantilla de Spanner a BigQuery es un flujo de procesamiento por lotes que lee datos de una tabla de Spanner y los escribe en BigQuery.
Requisitos del flujo de procesamiento
- La tabla de origen de Spanner debe existir antes de ejecutar el flujo de procesamiento.
- El conjunto de datos de BigQuery debe existir antes de ejecutar el flujo de procesamiento.
- Un archivo JSON que describa tu esquema de BigQuery.
El archivo debe contener una matriz JSON de nivel superior denominada
fields
. El contenido de la matrizfields
debe seguir el siguiente patrón:{"name": "COLUMN_NAME", "type": "DATA_TYPE"}
.El siguiente JSON describe un ejemplo de esquema de BigQuery:
{ "fields": [ { "name": "location", "type": "STRING" }, { "name": "name", "type": "STRING" }, { "name": "age", "type": "STRING" }, { "name": "color", "type": "STRING" }, { "name": "coffee", "type": "STRING" } ] }
La plantilla de Spanner a BigQuery no admite la importación de datos en campos
STRUCT
(Record) de la tabla de BigQuery de destino.
Parámetros de plantilla
Parámetros obligatorios
- spannerInstanceId: ID de la instancia de la base de datos de Spanner desde la que se va a leer.
- spannerDatabaseId el ID de la base de datos de Spanner que se va a exportar.
- outputTableSpec la ubicación de la tabla de salida de BigQuery en la que se escribirán los resultados. Por ejemplo,
<PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>
.En función delcreateDisposition
especificado, la tabla de salida se puede crear automáticamente con el esquema Avro proporcionado por el usuario.
Parámetros opcionales
- spannerProjectId el ID del proyecto en el que reside la base de datos de Spanner. El valor predeterminado de este parámetro es el proyecto en el que se ejecuta el flujo de procesamiento de Dataflow.
- spannerTableId nombre de la tabla de la base de datos de Spanner que se va a exportar. Se ignora si se define sqlQuery.
- spannerRpcPriority la prioridad de la solicitud (https://cloud.google.com/spanner/docs/reference/rest/v1/RequestOptions) de las llamadas de Spanner. Los valores posibles son
HIGH
,MEDIUM
yLOW
. El valor predeterminado esHIGH
. - sqlQuery la consulta SQL que se usará para leer datos de la base de datos de Spanner. Obligatorio si spannerTableId está vacío.
- bigQuerySchemaPath: la ruta de Cloud Storage (gs://) al archivo JSON que define tu esquema de BigQuery. Es obligatorio si Create Disposition no es CREATE_NEVER. Por ejemplo,
gs://your-bucket/your-schema.json
. - writeDisposition valor de WriteDisposition de BigQuery (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Por ejemplo,
WRITE_APPEND
,WRITE_EMPTY
oWRITE_TRUNCATE
. El valor predeterminado esWRITE_APPEND
. - createDisposition el valor de CreateDisposition de BigQuery (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Por ejemplo,
CREATE_IF_NEEDED
yCREATE_NEVER
. El valor predeterminado esCREATE_IF_NEEDED
. - useStorageWriteApi si es
true
, la canalización usa la API Storage Write de BigQuery (https://cloud.google.com/bigquery/docs/write-api). El valor predeterminado esfalse
. Para obtener más información, consulta el artículo sobre cómo usar la API Storage Write (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - useStorageWriteApiAtLeastOnce cuando se usa la API Storage Write, especifica la semántica de escritura. Para usar la semántica de al menos una vez (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), asigna a este parámetro el valor
true
. Para usar la semántica de entrega única, asigna el valorfalse
al parámetro. Este parámetro solo se aplica cuandouseStorageWriteApi
estrue
. El valor predeterminado esfalse
.
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 Spanner to BigQuery template.
- En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
- Haz clic en Ejecutar trabajo.
gcloud
En tu shell o terminal, ejecuta la plantilla:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex \ --project=PROJECT_ID \ --region=REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabaseId=SPANNER_DATABASE_ID,\ spannerTableId=SPANNER_TABLE_ID,\ sqlQuery=SQL_QUERY,\ outputTableSpec=OUTPUT_TABLE_SPEC,\
Haz los cambios siguientes:
JOB_NAME
: un nombre de trabajo único que elijasVERSION
: 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
SPANNER_INSTANCE_ID
: el ID de la instancia de SpannerSPANNER_DATABASE_ID
: el ID de la base de datos de SpannerSPANNER_TABLE_ID
: el nombre de la tabla de SpannerSQL_QUERY
: la consulta de SQLOUTPUT_TABLE_SPEC
: la ubicación de la tabla de BigQuery
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/flexTemplates:launch { "launchParameter": { "jobName": "JOB_NAME", "parameters": { "spannerInstanceId": "SPANNER_INSTANCE_ID", "spannerDatabaseId": "SPANNER_DATABASE_ID", "spannerTableId": "SPANNER_TABLE_ID", "sqlQuery": "SQL_QUERY", "outputTableSpec": "OUTPUT_TABLE_SPEC", }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_Spanner_to_BigQuery_Flex", "environment": { "maxWorkers": "10" } } }
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 elijasVERSION
: 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
SPANNER_INSTANCE_ID
: el ID de la instancia de SpannerSPANNER_DATABASE_ID
: el ID de la base de datos de SpannerSPANNER_TABLE_ID
: el nombre de la tabla de SpannerSQL_QUERY
: la consulta de SQLOUTPUT_TABLE_SPEC
: la ubicación de la tabla de BigQuery
Siguientes pasos
- Consulta información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas proporcionadas por Google.