Escreva do Dataflow para o Bigtable

Para escrever dados do Dataflow para o Bigtable, use o conetor Bigtable I/O do Apache Beam.

Paralelismo

O paralelismo é controlado pelo número de nós no cluster do Bigtable. Cada nó gere um ou mais intervalos de chaves, embora os intervalos de chaves possam mover-se entre nós como parte do equilíbrio de carga. Para mais informações, consulte o artigo Compreender o desempenho na documentação do Bigtable.

É-lhe cobrado o número de nós nos clusters da sua instância. Consulte os preços do Bigtable.

Desempenho

A tabela seguinte mostra as métricas de desempenho para as operações de escrita de E/S do Bigtable. As cargas de trabalho foram executadas num e2-standard2trabalhador, usando o SDK do Apache Beam 2.48.0 para Java. Não usaram o Runner v2.

100 milhões de registos | 1 kB | 1 coluna Débito (bytes) Tráfego transmitido (elementos)
Escrever 65 MBps 60 000 elementos por segundo

Estas métricas baseiam-se em pipelines de processamento em lote simples. Destinam-se a comparar o desempenho entre conectores de E/S e não são necessariamente representativos de pipelines do mundo real. O desempenho do pipeline do Dataflow é complexo e é uma função do tipo de VM, dos dados que estão a ser processados, do desempenho das origens e dos destinos externos, e do código do utilizador. As métricas baseiam-se na execução do SDK Java e não são representativas das características de desempenho de outros SDKs de idiomas. Para mais informações, consulte o artigo Desempenho do Beam IO.

Práticas recomendadas

  • Em geral, evite usar transações. Não é garantido que as transações sejam idempotentes, e o Dataflow pode invocá-las várias vezes devido a novas tentativas, o que causa valores inesperados.

  • Um único worker do Dataflow pode processar dados para muitos intervalos de chaves, o que leva a gravações ineficientes no Bigtable. A utilização de GroupByKey para agrupar dados por chave do Bigtable pode melhorar significativamente o desempenho de escrita.

  • Se escrever grandes conjuntos de dados no Bigtable, considere chamar withFlowControl. Esta definição limita automaticamente a taxa de tráfego para o Bigtable, para garantir que os servidores do Bigtable têm recursos suficientes disponíveis para fornecer dados.

O que se segue?