O modelo do BigQuery para o Bigtable é um pipeline em lote que copia dados de uma tabela do BigQuery para uma tabela do Bigtable. O modelo pode ler toda a tabela ou ler registros específicos usando uma consulta fornecida.
Requisitos de pipeline
- A tabela de origem do BigQuery precisa existir.
- A tabela do Bigtable precisa existir.
- A conta de serviço do worker precisa da permissão
roles/bigquery.datasets.create
. Para mais informações, consulte Introdução ao IAM.
Parâmetros do modelo
Parâmetros obrigatórios
- readIdColumn: o nome da coluna do BigQuery que armazena o identificador exclusivo da linha.
- bigtableWriteInstanceId: o ID da instância do Bigtable que contém a tabela.
- bigtableWriteTableId: o ID da tabela do Bigtable a ser gravada.
- bigtableWriteColumnFamily: o nome do grupo de colunas da tabela do Bigtable em que os dados serão gravados.
Parâmetros opcionais
- inputTableSpec: tabela do BigQuery a ser lida. Formato:
projectId:datasetId.tablename
. Se você especificarinputTableSpec
, o modelo vai ler os dados diretamente do armazenamento do BigQuery usando a API BigQuery Storage Read (https://cloud.google.com/bigquery/docs/reference/storage). Para informações sobre limitações na API Storage Read, consulte https://cloud.google.com/bigquery/docs/reference/storage#limitations. É preciso especificarinputTableSpec
ouquery
. Se você definir os dois parâmetros, o modelo vai usar oquery
. Exemplo: bigquery-project:dataset.input_table. - outputDeadletterTable: a tabela do BigQuery para mensagens que não foram adicionadas à tabela de saída, no formato <PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>. Se não existir uma tabela, ela será criada durante a execução do pipeline. Se não for especificado,
<outputTableSpec>_error_records
será usado. (Exemplo: id-do-projeto:seu-conjunto-de-dados.nome-da-tabela). - consulta: consulta SQL a ser usada para extrair dados do BigQuery. Se o conjunto de dados do BigQuery estiver em um projeto diferente do job do Dataflow, especifique o nome completo do conjunto de dados na consulta SQL. Por exemplo: <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. Por padrão, o parâmetro
query
usa o GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), a menos queuseLegacySql
sejatrue
. É preciso especificarinputTableSpec
ouquery
. Se você definir os dois parâmetros, o modelo vai usar oquery
. (Exemplo: select * from sampledb.sample_table). - useLegacySql: defina como verdadeiro para usar o SQL legado. Esse parâmetro só se aplica ao usar o parâmetro
query
. O padrão é: falso. - queryLocation: necessário ao ler uma visualização autorizada sem a permissão da tabela subjacente. (Exemplo: US).
- queryTempDataset : com essa opção, é possível definir um conjunto de dados para criar a tabela temporária que armazena os resultados da consulta. (Exemplo: temp_dataset).
- bigtableRpcAttemptTimeoutMs: o tempo limite de cada tentativa de RPC do Bigtable em milissegundos.
- bigtableRpcTimeoutMs: o tempo limite total de uma operação de RPC do Bigtable em milissegundos.
- bigtableAdditionalRetryCodes: os códigos de repetição adicionais. Exemplo: RESOURCE_EXHAUSTED,DEADLINE_EXCEEDED.
- bigtableWriteAppProfile: o ID do perfil do aplicativo do Bigtable a ser usado na exportação. Se você não especificar um perfil de aplicativo, o Bigtable usará o perfil de aplicativo padrão (https://cloud.google.com/bigtable/docs/app-profiles#default-app-profile) da instância.
- bigtableWriteProjectId: o ID do projeto do Google Cloud que contém a instância do Bigtable em que os dados serão gravados.
- bigtableBulkWriteLatencyTargetMs: o destino de latência do Bigtable em milissegundos para a limitação com base na latência.
- bigtableBulkWriteMaxRowKeyCount: o número máximo de chaves de linha em uma operação de gravação em lote do Bigtable.
- bigtableBulkWriteMaxRequestSizeBytes: o máximo de bytes a serem incluídos por operação de gravação em lote do Bigtable.
Executar o modelo
Console
- Acesse a página Criar job usando um modelo do Dataflow. Acesse Criar job usando um modelo
- No campo Nome do job, insira um nome exclusivo.
- Opcional: em Endpoint regional, selecione um valor no menu suspenso. A região padrão é
us-central1
.Para ver uma lista de regiões em que é possível executar um job do Dataflow, consulte Locais do Dataflow.
- No menu suspenso Modelo do Dataflow, selecione the BigQuery to Bigtable template.
- Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
- Cliquem em Executar job.
gcloud
No shell ou no terminal, execute o modelo:
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
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud em que você quer executar o job do DataflowJOB_NAME
: um nome de job de sua escolhaREGION_NAME
: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
READ_COLUMN_ID
: coluna de ID exclusivo do BigQuery.INPUT_TABLE_SPEC
: o nome da tabela do BigQueryBIGTABLE_INSTANCE_ID
: o ID da instância do Bigtable.BIGTABLE_TABLE_ID
: o ID da tabela do Bigtable.BIGTABLE_COLUMN_FAMILY
: grupo de colunas da tabela do Bigtable.
API
Para executar o modelo usando a API REST, envie uma solicitação HTTP POST. Para mais informações sobre a
API e os respectivos escopos de autorização, consulte
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", } }
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud em que você quer executar o job do DataflowJOB_NAME
: um nome de job de sua escolhaLOCATION
: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que você quer usarUse estes valores:
latest
para usar a versão mais recente do modelo, disponível na pasta mãe não datada no bucket: gs://dataflow-templates-REGION_NAME/latest/- o nome da versão, como
2023-09-12-00_RC00
, para usar uma versão específica do modelo, que pode ser encontrada aninhada na respectiva pasta mãe datada no bucket: gs://dataflow-templates-REGION_NAME/
READ_COLUMN_ID
: coluna de ID exclusivo do BigQuery.INPUT_TABLE_SPEC
: o nome da tabela do BigQueryBIGTABLE_INSTANCE_ID
: o ID da instância do Bigtable.BIGTABLE_TABLE_ID
: o ID da tabela do Bigtable.BIGTABLE_COLUMN_FAMILY
: grupo de colunas da tabela do Bigtable.
A seguir
- Saiba mais sobre os modelos do Dataflow.
- Confira a lista de modelos fornecidos pelo Google.