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 em que será feita a gravação.
- bigtableWriteColumnFamily: o nome do grupo de colunas da tabela do Bigtable em que os dados serão gravados.
Parâmetros opcionais
- timestampColumn: o nome da coluna do BigQuery a ser usada como o carimbo de data/hora da célula da coluna no Bigtable. O valor precisa ter precisão de milissegundos, por exemplo, INT64 / Long. Se uma linha não contiver o campo, o carimbo de data/hora de gravação padrão será usado. A coluna especificada não será incluída como parte da linha no Bigtable como uma coluna separada.
- skipNullValues: flag para indicar se os valores nulos podem ser propagados como um valor vazio ou uma coluna completamente ignorada para aderir ao formato de tabela esparsa do Bigtable. Nos casos em que isso leva a uma linha vazia, por exemplo, uma chave de linha válida, mas sem colunas, a linha não pode ser gravada no Bigtable e será ignorada. O padrão é: falso.
- inputTableSpec: tabela do BigQuery a ser lida. 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 especificarinputTableSpecouquery. Se você definir os dois parâmetros, o modelo vai usar oquery. Exemplo:<BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>. - outputDeadletterTable: a tabela do BigQuery para mensagens que não alcançaram a tabela de saída. Se uma tabela não existir, ela será criada durante a execução do pipeline. Se não for especificado,
<outputTableSpec>_error_recordsserá usado. Exemplo:<PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>. - 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
queryusa o GoogleSQL (https://cloud.google.com/bigquery/docs/introduction-sql), a menos queuseLegacySqlsejatrue. É preciso especificarinputTableSpecouquery. Se você definir os dois parâmetros, o modelo vai usar oquery. Exemplo:select * from sampledb.sample_table. - useLegacySql: defina como
truepara usar o SQL legado. Esse parâmetro só se aplica ao usar o parâmetroquery. O padrão éfalse. - 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 existente para criar a tabela temporária para armazenar os resultados da consulta. Exemplo:
temp_dataset. - KMSEncryptionKey: se você estiver lendo do BigQuery usando a origem da consulta, use essa chave do Cloud KMS para criptografar todas as tabelas temporárias criadas. Exemplo:
projects/your-project/locations/global/keyRings/your-keyring/cryptoKeys/your-key. - 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 na nuvem 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.
- bigtableBulkWriteFlowControl: quando definido como verdadeiro, ativa o controle de fluxo de gravação em lote, que usa o indicador do servidor para limitar as gravações. O padrão é: falso.
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 o modelo BigQuery para Bigtable.
- 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/ \ --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 em que você quer executar o job do Dataflow Google CloudJOB_NAME: um nome de job de sua escolhaREGION_NAME: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1VERSION: a versão do modelo que você quer usarUse estes valores:
latestpara 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/", } }
Substitua:
PROJECT_ID: o ID do projeto em que você quer executar o job do Dataflow Google CloudJOB_NAME: um nome de job de sua escolhaLOCATION: a região onde você quer implantar o job do Dataflow, por exemplo,us-central1VERSION: a versão do modelo que você quer usarUse estes valores:
latestpara 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.