Modelo do BigQuery para o Bigtable

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

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ê especificar inputTableSpec, 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 especificar inputTableSpec ou query. Se você definir os dois parâmetros, o modelo vai usar o query. 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 que useLegacySql seja true. É preciso especificar inputTableSpec ou query. Se você definir os dois parâmetros, o modelo vai usar o query. (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

  1. Acesse a página Criar job usando um modelo do Dataflow.
  2. Acesse Criar job usando um modelo
  3. No campo Nome do job, insira um nome exclusivo.
  4. 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.

  5. No menu suspenso Modelo do Dataflow, selecione the BigQuery to Bigtable template.
  6. Nos campos de parâmetro fornecidos, insira os valores de parâmetro.
  7. 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 Dataflow
  • JOB_NAME: um nome de job de sua escolha
  • REGION_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 usar

    Use estes valores:

  • READ_COLUMN_ID: coluna de ID exclusivo do BigQuery.
  • INPUT_TABLE_SPEC: o nome da tabela do BigQuery
  • BIGTABLE_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 Dataflow
  • JOB_NAME: um nome de job de sua escolha
  • LOCATION: a região onde você quer implantar o job do Dataflow, por exemplo, us-central1
  • VERSION: a versão do modelo que você quer usar

    Use estes valores:

  • READ_COLUMN_ID: coluna de ID exclusivo do BigQuery.
  • INPUT_TABLE_SPEC: o nome da tabela do BigQuery
  • BIGTABLE_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