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
- A tabela de origem do BigQuery tem de existir.
- A tabela do Bigtable tem de existir.
- A conta de serviço do trabalhador
precisa da autorização
roles/bigquery.datasets.create
. Para mais informações, consulte o artigo Introdução à IAM.
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 especificarinputTableSpec
ouquery
. Se definir ambos os parâmetros, o modelo usa o parâmetroquery
. 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 queuseLegacySql
sejatrue
. Tem de especificarinputTableSpec
ouquery
. Se definir ambos os parâmetros, o modelo usa o parâmetroquery
. 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âmetroquery
. 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
- Aceda à página do fluxo de dados Criar tarefa a partir de um modelo. Aceda a Criar tarefa a partir de modelo
- No campo Nome da tarefa, introduza um nome exclusivo para a tarefa.
- 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.
- No menu pendente Modelo do fluxo de dados, selecione the BigQuery to Bigtable template.
- Nos campos de parâmetros fornecidos, introduza os valores dos parâmetros.
- 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 CloudJOB_NAME
: um nome de tarefa exclusivo à sua escolhaREGION_NAME
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: 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 pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
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 CloudJOB_NAME
: um nome de tarefa exclusivo à sua escolhaLOCATION
: a região onde quer implementar a tarefa do Dataflow, por exemplo,us-central1
VERSION
: a versão do modelo que quer usarPode usar os seguintes valores:
latest
para usar a versão mais recente do modelo, que está disponível na pasta principal sem data no contentor: 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 pasta principal com a data correspondente no contentor: gs://dataflow-templates-REGION_NAME/
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?
- Saiba mais sobre os modelos do Dataflow.
- Consulte a lista de modelos fornecidos pela Google.