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 existente do Bigtable. O modelo pode ler toda a tabela ou ler registos específicos através de uma consulta fornecida.

Requisitos do pipeline

Parâmetros de modelos

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 na qual escrever.
  • bigtableWriteColumnFamily: o nome da família de colunas da tabela do Bigtable na qual escrever dados.

Parâmetros opcionais

  • timestampColumn: o nome da coluna do BigQuery a usar como a data/hora da célula da coluna no Bigtable. O valor tem de ter uma precisão de milissegundos, por exemplo, INT64 / Long. Se uma linha não contiver o campo, é usada a data/hora de gravação predefinida. A coluna especificada não é incluída como parte da linha no Bigtable como uma coluna separada.
  • skipNullValues: indicador para indicar se os valores nulos podem ser propagados como um valor vazio ou se a coluna é completamente ignorada para aderir ao formato de tabela esparsa do Bigtable. Nos casos em que isto leva a uma linha vazia, por exemplo, uma rowkey válida, mas sem colunas, a linha não pode ser escrita no BigTable e é ignorada. A predefinição é: false.
  • inputTableSpec: a tabela do BigQuery a partir da qual ler. Se especificar inputTableSpec, o modelo lê os dados diretamente do armazenamento do BigQuery através da API BigQuery Storage Read (https://cloud.google.com/bigquery/docs/reference/storage). Para obter informações sobre as limitações na API Storage Read, consulte https://cloud.google.com/bigquery/docs/reference/storage#limitations. Tem de especificar inputTableSpec ou query. Se definir ambos os parâmetros, o modelo usa o parâmetro query. Por exemplo, <BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>.
  • outputDeadletterTable: a tabela do BigQuery para mensagens que não conseguiram alcançar a tabela de saída. Se uma tabela não existir, é criada durante a execução do pipeline. Se não for especificado, é usado <outputTableSpec>_error_records. Por exemplo, <PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>.
  • query: a consulta SQL a usar para ler dados do BigQuery. Se o conjunto de dados do BigQuery estiver num projeto diferente do trabalho do Dataflow, especifique o nome completo do conjunto de dados na consulta SQL, por exemplo: <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>. Por predefinição, o parâmetro query usa o GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), a menos que useLegacySql seja true. Tem de especificar inputTableSpec ou query. Se definir ambos os parâmetros, o modelo usa o parâmetro query. Por exemplo, select * from sampledb.sample_table.
  • useLegacySql: definido como true para usar o SQL antigo. Este parâmetro só se aplica quando usa o parâmetro query. A predefinição é false.
  • queryLocation: necessário quando lê a partir de uma vista autorizada sem a autorização da tabela subjacente. Por exemplo, US.
  • queryTempDataset: com esta opção, pode definir um conjunto de dados existente para criar a tabela temporária que armazena os resultados da consulta. Por exemplo, temp_dataset.
  • KMSEncryptionKey: se estiver a ler a partir do BigQuery através da origem de consulta, use esta chave do Cloud KMS para encriptar todas as tabelas temporárias criadas. Por exemplo, projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key.
  • bigtableRpcAttemptTimeoutMs: o limite de tempo para cada tentativa de RPC do Bigtable em milissegundos.
  • bigtableRpcTimeoutMs: o limite de tempo total para uma operação RPC do Bigtable em milissegundos.
  • bigtableAdditionalRetryCodes: os códigos de repetição adicionais. Por exemplo, RESOURCE_EXHAUSTED,DEADLINE_EXCEEDED.
  • bigtableWriteAppProfile: o ID do perfil da aplicação do Bigtable a usar para a exportação. Se não especificar um perfil de app, o Bigtable usa o perfil de app predefinido (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 para escrever dados.
  • bigtableBulkWriteLatencyTargetMs: o objetivo de latência do Bigtable em milissegundos para a limitação baseada na latência.
  • bigtableBulkWriteMaxRowKeyCount: o número máximo de chaves de linhas numa operação de escrita em lote do Bigtable.
  • bigtableBulkWriteMaxRequestSizeBytes: o número máximo de bytes a incluir por operação de escrita em lote do Bigtable.

Execute o modelo

Consola

  1. Aceda à página do fluxo de dados Criar tarefa a partir de um modelo.
  2. Aceda a Criar tarefa a partir de modelo
  3. No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
  4. Opcional: para Ponto final regional, selecione um valor no menu pendente. A região predefinida é us-central1.

    Para ver uma lista das regiões onde pode executar uma tarefa do Dataflow, consulte as localizações do Dataflow.

  5. No menu pendente Modelo do fluxo de dados, selecione the BigQuery to Bigtable template.
  6. Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
  7. Clique em Executar tarefa.

gcloud

Na 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 o seguinte:

  • PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google Cloud
  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • REGION_NAME: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • READ_COLUMN_ID: a coluna de ID único 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: a família de colunas da tabela do Bigtable.

API

Para executar o modelo através da API REST, envie um pedido HTTP POST. Para mais informações sobre a API e os respetivos âmbitos 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 o seguinte:

  • PROJECT_ID: o ID do projeto onde quer executar a tarefa do Dataflow Google Cloud
  • JOB_NAME: um nome de tarefa exclusivo à sua escolha
  • LOCATION: a região onde quer implementar a tarefa do Dataflow, por exemplo, us-central1
  • VERSION: a versão do modelo que quer usar

    Pode usar os seguintes valores:

  • READ_COLUMN_ID: a coluna de ID único 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: a família de colunas da tabela do Bigtable.

O que se segue?