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

Com o Bigtable e o BigQuery, é possível criar um banco de dados de análise em tempo real e usá-lo em pipelines de machine learning (ML). Isso permite que você mantenha 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, você pode 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 de 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 você a 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. Ele permite que você faça o seguinte:

  • Desenvolver transformações de dados em uma interface compatível com o Pandas (bigframes.pandas) diretamente nos 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 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 do BigQuery designada 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 do BigQuery
  • Opcionalmente, realize 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 DataFrames do BigQuery 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 conferir 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 para a qual você está escrevendo.

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 BigFrames do BigQuery, mas você é cobrado 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 consulta contínua é cobrado de acordo com as taxas de preços do Bigtable.

Limitações

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

A seguir