Leer desde Bigtable a Dataflow

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

Paralelismo

La paralelización se controla según la cantidad de nodos en el clúster de Bigtable. Cada nodo administra uno o más rangos de claves, aunque estos 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 las canalizaciones nuevas, usa el conector BigtableIO, no CloudBigtableIO.

  • Crea perfiles de app separados 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.

  • Supervisa los nodos de Bigtable. Si experimentas cuellos de botella de rendimiento, verifica si los recursos, como el uso de la CPU, están limitados en Bigtable. Para obtener más información, consulta Supervisión.

  • En general, los tiempos de espera predeterminados están bien ajustados para la mayoría de las canalizaciones. Si una canalización de transmisión parece bloquearse al leer 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 un shuffle, 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 transmisión a paginada, lo que evita el problema.

  • Si usas un solo clúster de Bigtable para las 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.

¿Qué sigue?