La plantilla de BigQuery a Bigtable es un flujo de procesamiento por lotes que copia datos de una tabla de BigQuery en una tabla de Bigtable. La plantilla puede leer toda la tabla o registros específicos mediante una consulta proporcionada.
Requisitos del flujo de procesamiento
- La tabla de BigQuery de origen debe existir.
- La tabla de Bigtable debe existir.
- La cuenta de servicio de trabajador
necesita el permiso
roles/bigquery.datasets.create
. Para obtener más información, consulta Introducción a la gestión de identidades y accesos.
Parámetros de plantilla
Parámetros obligatorios
- readIdColumn el nombre de la columna de BigQuery que almacena el identificador único de la fila.
- bigtableWriteInstanceId el ID de la instancia de Bigtable que contiene la tabla.
- bigtableWriteTableId ID de la tabla de Bigtable en la que se va a escribir.
- bigtableWriteColumnFamily el nombre de la familia de columnas de la tabla de Bigtable en la que se escribirán los datos.
Parámetros opcionales
- timestampColumn el nombre de la columna de BigQuery que se usará como marca de tiempo de la celda de la columna en Bigtable. El valor debe tener una precisión de milisegundos (por ejemplo, INT64 o Long). Si una fila no contiene el campo, se usará la marca de tiempo de escritura predeterminada. La columna especificada no se incluirá como parte de la fila en Bigtable como una columna independiente.
- skipNullValues indicador que determina si los valores nulos se pueden propagar como un valor vacío o si se puede omitir una columna por completo para cumplir el formato de tabla dispersa de Bigtable. En los casos en los que esto dé lugar a una fila vacía (por ejemplo, una clave de fila válida, pero sin columnas), la fila no se podrá escribir en Bigtable y se omitirá. Valor predeterminado: false.
- inputTableSpec la tabla de BigQuery de la que se van a leer los datos. Si especificas
inputTableSpec
, la plantilla lee los datos directamente del almacenamiento de BigQuery mediante la API Storage Read de BigQuery (https://cloud.google.com/bigquery/docs/reference/storage). Para obtener información sobre las limitaciones de la API Storage Read, consulta https://cloud.google.com/bigquery/docs/reference/storage#limitations. Debes especificarinputTableSpec
oquery
. Si defines ambos parámetros, la plantilla usará el parámetroquery
. Por ejemplo,<BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>
. - outputDeadletterTable la tabla de BigQuery de los mensajes que no se han podido enviar a la tabla de salida. Si una tabla no existe, se crea durante la ejecución de la canalización. Si no se especifica, se usa
<outputTableSpec>_error_records
. Por ejemplo,<PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>
. - query: la consulta de SQL que se usará para leer datos de BigQuery. Si el conjunto de datos de BigQuery está en un proyecto diferente al del trabajo de Dataflow, especifica el nombre completo del conjunto de datos en la consulta SQL. Por ejemplo: <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. De forma predeterminada, el parámetro
query
usa GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), a menos queuseLegacySql
seatrue
. Debes especificarinputTableSpec
oquery
. Si defines ambos parámetros, la plantilla usará el parámetroquery
. Por ejemplo,select * from sampledb.sample_table
. - useLegacySql asigna el valor
true
para usar SQL antiguo. Este parámetro solo se aplica cuando se usa el parámetroquery
. El valor predeterminado esfalse
. - queryLocation se necesita al leer datos de una vista autorizada sin el permiso de la tabla subyacente. Por ejemplo,
US
. - queryTempDataset con esta opción, puedes definir un conjunto de datos para crear la tabla temporal en la que se almacenarán los resultados de la consulta. Por ejemplo,
temp_dataset
. - KMSEncryptionKey si lees datos de BigQuery mediante una fuente de consulta, usa esta clave de Cloud KMS para cifrar las tablas temporales que se creen. Por ejemplo,
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key
. - bigtableRpcAttemptTimeoutMs tiempo de espera de cada intento de llamada a procedimiento remoto de Bigtable en milisegundos.
- bigtableRpcTimeoutMs el tiempo de espera total de una operación RPC de Bigtable en milisegundos.
- bigtableAdditionalRetryCodes los códigos de reintento adicionales. Por ejemplo,
RESOURCE_EXHAUSTED,DEADLINE_EXCEEDED
. - bigtableWriteAppProfile ID del perfil de aplicación de Bigtable que se va a usar para la exportación. Si no especificas un perfil de aplicación, Bigtable usará el perfil de aplicación predeterminado (https://cloud.google.com/bigtable/docs/app-profiles#default-app-profile) de la instancia.
- bigtableWriteProjectId ID del proyecto de Google Cloud que contiene la instancia de Bigtable en la que se van a escribir los datos.
- bigtableBulkWriteLatencyTargetMs la latencia objetivo de Bigtable en milisegundos para la limitación basada en la latencia.
- bigtableBulkWriteMaxRowKeyCount número máximo de claves de fila en una operación de escritura por lotes de Bigtable.
- bigtableBulkWriteMaxRequestSizeBytes número máximo de bytes que se pueden incluir por operación de escritura por lotes de Bigtable.
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 BigQuery to Bigtable 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 \ --project=PROJECT_ID \ --region=REGION_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Bigtable \ --parameters \ readIdColumn=READ_COLUMN_ID,\ inputTableSpec=INPUT_TABLE_SPEC,\ bigtableWriteInstanceId=BIGTABLE_INSTANCE_ID,\ bigtableWriteTableId=BIGTABLE_TABLE_ID,\ bigtableWriteColumnFamily=BIGTABLE_COLUMN_FAMILY
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 elijasREGION_NAME
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
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/
READ_COLUMN_ID
: la columna de ID único de BigQuery.INPUT_TABLE_SPEC
: el nombre de la tabla de BigQuery.BIGTABLE_INSTANCE_ID
: el ID de tu instancia de Bigtable.BIGTABLE_TABLE_ID
: el ID de tu tabla de Bigtable.BIGTABLE_COLUMN_FAMILY
: la familia de columnas de tu tabla de Bigtable.
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 { "launch_parameter": { "jobName": "JOB_NAME", "parameters": { "readIdColumn": "READ_COLUMN_ID", "inputTableSpec": "INPUT_TABLE_SPEC", "bigtableWriteInstanceId": "BIGTABLE_INSTANCE_ID", "bigtableWriteTableId": "BIGTABLE_TABLE_ID", "bigtableWriteColumnFamily": "BIGTABLE_COLUMN_FAMILY" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Bigtable", } }
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 elijasLOCATION
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
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/
READ_COLUMN_ID
: la columna de ID único de BigQuery.INPUT_TABLE_SPEC
: el nombre de la tabla de BigQuery.BIGTABLE_INSTANCE_ID
: el ID de tu instancia de Bigtable.BIGTABLE_TABLE_ID
: el ID de tu tabla de Bigtable.BIGTABLE_COLUMN_FAMILY
: la familia de columnas de tu tabla de Bigtable.
Siguientes pasos
- Consulta información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas proporcionadas por Google.