Leer desde Bigtable a Dataflow

Para leer datos de Bigtable a Dataflow, usa el conector de E/S de Bigtable de Apache Beam.

Paralelismo

El paralelismo se controla por la cantidad de nodos en el clúster de Bigtable. Cada nodo administra uno o más rangos de claves, aunque los rangos de claves pueden moverse entre nodos como parte del balanceo de cargas. Para obtener más información, consulta Lecturas y rendimiento en la documentación de Bigtable.

Se te cobra por la cantidad de nodos en los clústeres de tu instancia. Consulta Precios de Bigtable.

Rendimiento

En la siguiente tabla, se muestran las métricas de rendimiento de las operaciones de lectura de Bigtable. Las cargas de trabajo se ejecutaron en un trabajador e2-standard2, con el SDK de Apache Beam 2.48.0 para Java. No usaron Runner v2.

100 millones de registros | 1 KB | 1 columna Capacidad de procesamiento (bytes) Capacidad de procesamiento (elementos)
Leer 180 MBps 170,000 elementos por segundo

Estas métricas se basan en canalizaciones por lotes simples. Están diseñadas para comparar el rendimiento entre los conectores de E/S y no representan necesariamente las canalizaciones del mundo real. El rendimiento de la canalización de Dataflow es complejo y es una función del tipo de VM, los datos que se procesan, el rendimiento de las fuentes y los receptores externos y el código de usuario. Las métricas se basan en la ejecución del SDK de Java y no representan las características de rendimiento de otros SDK de lenguaje. Para obtener más información, consulta Rendimiento de E/S de Beam.

Prácticas recomendadas

  • Para canalizaciones nuevas, usa el conector BigtableIO, no CloudBigtableIO.

  • Crea perfiles de app independientes para cada tipo de canalización. Los perfiles de app habilitan mejores métricas para diferenciar el tráfico entre canalizaciones, para brindar asistencia y realizar un seguimiento del uso.

  • Supervisar los nodos de Bigtable Si tienes cuellos de botella en el rendimiento, verifica si los recursos como el uso de CPU están restringidos dentro de Bigtable. Para obtener más información, consulta Supervisión.

  • En general, los tiempos de espera predeterminados se ajustan bien para la mayoría de las canalizaciones. Si parece que una canalización de transmisión se detiene en la lectura de Bigtable, intenta llamar a withAttemptTimeout para ajustar el tiempo de espera del intento.

  • Considera habilitar el ajuste de escala automático de Bigtable o cambiar el tamaño del clúster de Bigtable para que se ajuste al tamaño de tus trabajos de Dataflow.

  • Considera configurar maxNumWorkers en el trabajo de Dataflow para limitar la carga en el clúster de Bigtable.

  • Si se realiza un procesamiento significativo en un elemento de Bigtable antes de una redistribución, es posible que se agote el tiempo de espera de las llamadas a Bigtable. En ese caso, puedes llamar a withMaxBufferElementCount para almacenar en búfer los elementos. Este método convierte la operación de lectura de la transmisión a paginada, lo que evita el problema.

  • Si usas un solo clúster de Bigtable para canalizaciones de transmisión y por lotes, y el rendimiento se degrada en Bigtable, considera configurar la replicación en el clúster. Luego, separa las canalizaciones por lotes y de transmisión para que lean desde diferentes réplicas. Para obtener más información, consulta Descripción general de la replicación.

Próximos pasos