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-standard2
trabalhador, 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?
- Leia a documentação do conetor Bigtable I/O.
- Consulte a lista de modelos fornecidos pela Google.