Sincronizar conjuntos de dados on-line e off-line com o BigQuery DataFrames

Usando o Bigtable com o BigQuery, é possível criar um banco de dados de análise em tempo real e usá-lo em pipelines de aprendizado de máquina (ML). Isso permite manter seus dados sincronizados, oferecendo suporte à manipulação de dados e ao desenvolvimento de modelos (acesso off-line) e à veiculação de aplicativos de baixa latência (acesso on-line).

Para criar seu banco de dados de análise em tempo real, use o BigQuery DataFrames, um conjunto de bibliotecas Python de código aberto para processamento de dados do BigQuery. Com o BigQuery DataFrames, é possível desenvolver e treinar modelos no BigQuery e replicar automaticamente uma cópia dos valores de dados mais recentes usados para seus modelos de ML no Bigtable para veiculação on-line.

Este documento apresenta uma visão geral do uso da bigframes.streaming API para criar jobs do BigQuery que replicam e sincronizam automaticamente conjuntos de dados no BigQuery e no Bigtable. Antes de ler este documento, confira se você entendeu os seguintes documentos:

BigQuery DataFrames

O DataFrames do BigQuery ajuda a desenvolver e treinar modelos no BigQuery e replica automaticamente uma cópia dos valores de dados mais recentes usados para seus modelos de ML no Bigtable para veiculação on-line. Ele permite que você faça o seguinte:

  • Desenvolver transformações de dados em uma interface compatível com Pandas (bigframes.pandas) diretamente com os dados do BigQuery
  • Treinar modelos usando uma API semelhante ao scikit-learn (bigframes.ML)
  • Sincronize os dados necessários para inferência de baixa latência com o Bigtable (bigframes.streaming) para oferecer suporte a aplicativos voltados ao usuário.

BigFrames StreamingDataFrame

bigframes.streaming.StreamingDataFrame é um tipo de DataFrame no pacote BigQuery DataFrames. Ele permite criar um objeto StreamingDataFrame que pode ser usado para gerar um job em execução contínua que transmite dados de uma tabela designada do BigQuery para o Bigtable para veiculação on-line. Isso é feito gerando consultas contínuas do BigQuery.

Um BigFrames StreamingDataFrame pode fazer o seguinte:

  • Criar um StreamingDataFrame usando uma tabela designada do BigQuery
  • Opcionalmente, faça outras operações do Pandas, como selecionar, filtrar e visualizar o conteúdo.
  • Criar e gerenciar jobs de streaming para o Bigtable

Funções exigidas

Para receber as permissões necessárias para usar o BigQuery DataFrames em um notebook do BigQuery, peça ao administrador para conceder a você os seguintes papéis do IAM:

Para receber as permissões necessárias para gravar dados em uma tabela do Bigtable, peça ao administrador para conceder a você os seguintes papéis do IAM:

Primeiros passos

O DataFrames do BigQuery é um pacote de código aberto. Para instalar a versão mais recente, execute pip install --upgrade bigframes.

Para criar seu primeiro BigFrames StreamingDataFrame e sincronizar dados entre o BigQuery e o Bigtable, execute o snippet de código a seguir. Para ver o exemplo de código completo, consulte o notebook do GitHub BigFrames StreamingDataFrame.

  import bigframes.streaming as bst

  bigframes.options._bigquery_options.project = "PROJECT"

  sdf = bst.read_gbq_table("birds.penguins_bigtable_streaming")

  job = sdf.to_bigtable(instance="BIGTABLE_INSTANCE",

    table="TABLE",

    app_profile=None,

    truncate=True,

    overwrite=True,`

    auto_create_column_families=True,

    bigtable_options={},

    job_id=None,

    job_id_prefix= "test_streaming_",)

  print(job.running())

  print(job.error_result)

Substitua:

  • PROJECT: o ID do projeto Google Cloud
  • BIGTABLE_INSTANCE: o ID da instância do Bigtable que contém a tabela em que você está gravando.
  • TABLE: o ID da tabela do Bigtable em que você está gravando.

Depois que o job é inicializado, ele é executado como uma consulta contínua no BigQuery e transmite todas as mudanças de dados para o Bigtable.

Custos

Não há cobranças adicionais pelo uso da API BigQuery BigFrames, mas você paga pelos recursos usados para consultas contínuas, Bigtable e BigQuery.

As consultas contínuas usam os preços de computação de capacidade do BigQuery, que são medidos em slots. Para executar consultas contínuas, é preciso ter uma reserva que use a edição Enterprise ou Enterprise Plus e uma atribuição de reserva que use o tipo de job CONTINUOUS.

O uso de outros recursos do BigQuery, como ingestão de dados e armazenamento, é cobrado conforme as taxas mostradas nos Preços do BigQuery.

O uso de serviços do Bigtable que recebem resultados de consultas contínuas é cobrado de acordo com as taxas de preços do Bigtable.

Limitações

Todas as limitações de recursos e localização associadas a consultas contínuas também se aplicam a DataFrames de streaming.

A seguir