Prácticas recomendadas de conectores de E/de Apache Beam

El procesamiento de datos en Dataflow se puede paralelizar en gran medida. Dataflow gestiona gran parte de este paralelismo automáticamente. Los conectores de entrada/salida se encuentran en el límite entre tu canalización y otras partes de tu arquitectura, como el almacenamiento de archivos, las bases de datos y los sistemas de mensajería. Por lo tanto, los conectores de E/S suelen tener consideraciones específicas para lograr el paralelismo.

Prácticas recomendadas generales

En la siguiente lista se describen las prácticas recomendadas generales para usar conectores de E/S en Dataflow.

  • Lee la documentación de Javadoc, Pydoc o Go de los conectores de tu pipeline. Para obtener más información, consulta la sección sobre conectores de entrada/salida de la documentación de Apache Beam.

  • Usa la versión más reciente del SDK de Apache Beam. Los conectores de entrada/salida se mejoran continuamente, añadiendo funciones y corrigiendo problemas conocidos.

  • Al desarrollar una canalización, es importante equilibrar el paralelismo del trabajo. Si un trabajo tiene demasiado poco paralelismo, puede ser lento y los datos pueden acumularse en la fuente. Sin embargo, un paralelismo excesivo puede sobrecargar un receptor con demasiadas solicitudes.

  • No te fíes del orden de los elementos. En general, Dataflow no garantiza el orden de los elementos de una colección.

  • Si no hay ningún conector de E/S disponible en el SDK que elijas, puedes usar el framework multilingüe para usar un conector de E/S de otro SDK. Además, los conectores no siempre tienen la misma paridad de funciones entre SDKs. Si un conector de otro SDK proporciona una función que necesitas, puedes usarlo como una transformación entre lenguajes.

  • Por lo general, escribir conectores de entrada/salida personalizados es complicado. Usa un conector que ya tengas siempre que sea posible. Si necesitas implementar un conector de E/S personalizado, consulta el artículo Desarrollar un nuevo conector de E/S.

  • Si una canalización falla, comprueba si hay errores registrados por los conectores de entrada/salida. Consulta Solucionar errores de Dataflow.

  • Cuando realices escrituras de Dataflow en un conector, considera la posibilidad de usar un ErrorHandler para gestionar las escrituras fallidas o las lecturas incorrectas. Este tipo de gestión de errores se admite en las siguientes E/S de Java en las versiones 2.55.0 y posteriores de Apache Beam: BigQueryIO, BigtableIO, PubSubIO, KafkaIO, FileIO, TextIO y AvroIO.

Prácticas recomendadas para conectores de entrada/salida individuales

En los siguientes temas se indican las prácticas recomendadas para los conectores de E/individuales:

Conector de E/SLeerEscritura
Apache Iceberg Leer de Apache Iceberg Escribir en Apache Iceberg
Apache Kafka Leer desde Apache Kafka Escribir en Apache Kafka
BigQuery Leer desde BigQuery Escribir en BigQuery
Bigtable Leer datos de Bigtable Escribir en Bigtable
Cloud Storage Leer desde Cloud Storage Escribir en Cloud Storage
Pub/Sub Leer de Pub/Sub Escribir en Pub/Sub

Conectores de E/compatibles con Google

En la siguiente tabla se indican los conectores de entrada/salida de Apache Beam que admite Dataflow. Para ver una lista completa de conectores de entrada/salida de Apache Beam, incluidos los desarrollados por la comunidad de Apache Beam y compatibles con otros runners, consulta Conectores de entrada/salida en la documentación de Apache Beam.

Nombre del conector de E/S Java Python Go
AvroIO Compatible Compatible Compatible
BigQueryIO Compatible Compatible Compatible
BigTableIO Compatible Sincronización compatible Sincronización compatible
DatastoreIO Compatible Compatible Compatible
FhirIO (sanidad) Compatible No disponible Compatible
FileIO Compatible Compatible Compatible
GcsFileSystem Compatible Compatible Compatible
JdbcIO Compatible Compatibilidad con varios idiomas Compatibilidad con varios idiomas
KafkaIO Compatible Compatibilidad con varios idiomas Compatibilidad con varios idiomas
LocalFileSystem Compatible Compatible Compatible
ParquetIO Compatible Compatible Compatible
PubSubIO Compatible Compatible Compatible
SpannerIO Compatible Compatibilidad con varios idiomas Compatible
TextIO Compatible Compatible Compatible
TFRecordIO Compatible Compatible No disponible

Siguientes pasos