La plantilla de Spanner a BigQuery es una canalización por lotes que lee datos de una tabla de Spanner y los escribe en BigQuery.
Requisitos de la canalización
- La tabla de entrada de Spanner debe existir antes de ejecutar la canalización.
- El conjunto de datos de BigQuery debe existir antes de ejecutar la canalización.
- Un archivo JSON que describa tu esquema de BigQuery.
El archivo debe contener un array JSON de nivel superior titulado
fields
. El contenido del arrayfields
debe usar el siguiente patrón:{"name": "COLUMN_NAME", "type": "DATA_TYPE"}
.En el siguiente JSON, se describe un esquema de BigQuery de ejemplo:
{ "fields": [ { "name": "location", "type": "STRING" }, { "name": "name", "type": "STRING" }, { "name": "age", "type": "STRING" }, { "name": "color", "type": "STRING" }, { "name": "coffee", "type": "STRING" } ] }
La plantilla por lotes de Spanner a BigQuery no admite la importación de datos a los campos
STRUCT
(Registro) en la tabla BigQuery de destino.
Parámetros de la plantilla
Parámetros obligatorios
- spannerInstanceId: ID de la instancia de la base de datos de Spanner desde la que se leerá.
- spannerDatabaseId: El ID de la base de datos de la base de datos de Spanner que se exportará.
- outputTableSpec: La ubicación de la tabla de BigQuery en la que se escribirá el resultado. Por ejemplo,
<PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>
. Según elcreateDisposition
especificado, es posible que la tabla de resultados se cree automáticamente con el esquema de 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 para este parámetro es el proyecto en el que se ejecuta la canalización de Dataflow.
- spannerTableId: El nombre de la tabla de la base de datos de Spanner que se exportará. Se ignora si se establece sqlQuery.
- spannerRpcPriority: La prioridad de solicitud (https://cloud.google.com/spanner/docs/reference/rest/v1/RequestOptions) para las llamadas de Spanner. Los valores posibles son
HIGH
,MEDIUM
yLOW
. El valor predeterminado esHIGH
. - sqlQuery: La consulta en SQL que se usará para leer los datos de la base de datos de Spanner. Es obligatorio si spannerTableId está vacío.
- bigQuerySchemaPath: La ruta de Cloud Storage (gs://) al archivo JSON que define tu esquema de BigQuery. (Ejemplo: gs://your-bucket/your-schema.json).
- writeDisposition: El valor de WriteDisposition de BigQuery (https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationload). Por ejemplo,
WRITE_APPEND
,WRITE_EMPTY
oWRITE_TRUNCATE
. La configuración predeterminada esWRITE_APPEND
. - createDisposition: el objeto 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 de BigQuery Storage Write (https://cloud.google.com/bigquery/docs/write-api). El valor predeterminado esfalse
. Para obtener más información, consulta Usa la API de Storage Write (https://beam.apache.org/documentation/io/built-in/google-bigquery/#storage-write-api). - useStorageWriteApiAtLeastOnce: cuando usas la API de Storage Write, se especifica la semántica de escritura. Para usar una semántica de al menos una vez (https://beam.apache.org/documentation/io/built-in/google-bigquery/#at-least-once-semantics), configura el parámetro en
true
. Para usar una semántica de una y solo una vez, configura el parámetro enfalse
. Este parámetro se aplica solo cuandouseStorageWriteApi
estrue
. El valor predeterminado esfalse
.
Ejecuta la plantilla
Console
- Ve a la página Crear un trabajo a partir de una plantilla de Dataflow. Ir a Crear un trabajo a partir de una plantilla
- En el campo Nombre del trabajo, ingresa un nombre de trabajo único.
- Opcional: Para Extremo regional, selecciona un valor del menú desplegable. La región predeterminada es
us-central1
.Para obtener una lista de regiones en las que puedes ejecutar un trabajo de Dataflow, consulta Ubicaciones de Dataflow.
- En el menú desplegable Plantilla de Dataflow, selecciona the Spanner to BigQuery template.
- En los campos de parámetros proporcionados, ingresa los valores de tus parámetros.
- Haga 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,\
Reemplaza lo siguiente:
JOB_NAME
: Es el nombre del trabajo que elijasVERSION
: Es la versión de la plantilla que deseas usar.Puedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta superior non-dated en el bucket 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 puede encontrar anidada en la carpeta superior con fecha correspondiente en el bucket gs://dataflow-templates-REGION_NAME/
REGION_NAME
: La región en la que deseas implementar tu trabajo de Dataflow, por ejemplo,us-central1
SPANNER_INSTANCE_ID
: Es el ID de la instancia de Spanner.SPANNER_DATABASE_ID
: Es el ID de la base de datos de Spanner.SPANNER_TABLE_ID
: Es el nombre de la tabla de Spanner.SQL_QUERY
: La consulta en SQLOUTPUT_TABLE_SPEC
: la ubicación de la tabla de BigQuery.
API
Para ejecutar la plantilla con la API de REST, envía una solicitud POST HTTP. Para obtener más información de la API y sus permisos 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" } } }
Reemplaza lo siguiente:
PROJECT_ID
: El ID del proyecto de Google Cloud en el que deseas ejecutar el trabajo de Dataflow.JOB_NAME
: Es el nombre del trabajo que elijasVERSION
: Es la versión de la plantilla que deseas usar.Puedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta superior non-dated en el bucket 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 puede encontrar anidada en la carpeta superior con fecha correspondiente en el bucket gs://dataflow-templates-REGION_NAME/
LOCATION
: La región en la que deseas implementar tu trabajo de Dataflow, por ejemplo,us-central1
SPANNER_INSTANCE_ID
: Es el ID de la instancia de Spanner.SPANNER_DATABASE_ID
: Es el ID de la base de datos de Spanner.SPANNER_TABLE_ID
: Es el nombre de la tabla de Spanner.SQL_QUERY
: La consulta en SQLOUTPUT_TABLE_SPEC
: la ubicación de la tabla de BigQuery.
¿Qué sigue?
- Obtén información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas que proporciona Google.