Prácticas recomendadas para el conector de E/S de Apache Beam

El procesamiento de datos en Dataflow puede tener un paralelismo alto. Dataflow controla gran parte de este paralelismo automáticamente. Los conectores de E/S se encuentran en el límite entre la canalización y otras partes de la arquitectura, como el almacenamiento de archivos, las bases de datos y los sistemas de mensajería. Por lo tanto, los conectores de E/S a menudo tienen 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 para los conectores en la canalización. Para obtener más información, consulta Conectores de E/S en la documentación de Apache Beam.

  • Usa la versión más reciente del SDK de Apache Beam. Los conectores de E/S se mejoran de forma continua, se agregan funciones y solucionan problemas conocidos.

  • Cuando desarrollas una canalización, es importante equilibrar el paralelismo del trabajo. Si un trabajo tiene muy poco paralelismo, puede ser lento y los datos se pueden acumular en el origen. Sin embargo, demasiado paralelismo puede sobrecargar un receptor con demasiadas solicitudes.

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

  • Si un conector de E/S no está disponible en el SDK que elijas, considera usar el framework para varios lenguajes para usar un conector de E/S de otro SDK. Además, los conectores no siempre tienen paridad de funciones entre los SDK. Si un conector de otro SDK proporciona una función que necesitas, puedes usarlo como una transformación entre lenguajes.

  • En general, escribir conectores de E/S personalizados es un desafío. Usa un conector existente siempre que sea posible. Si necesitas implementar un conector de E/S personalizado, consulta Desarrolla un conector de E/S nuevo.

  • Si una canalización falla, verifica si hay errores registrados por los conectores de E/S. Consulta Soluciona errores de Dataflow.

  • Cuando realizas operaciones de escritura de Dataflow en un conector, considera usar un ErrorHandler para controlar cualquier escritura con errores o lecturas con formato incorrecto. Este tipo de manejo de errores es compatible con 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 los conectores de E/S individuales

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

Conector de E/SLeerEscritura
Apache Iceberg Lee desde Apache Iceberg Escribe en Apache Iceberg
BigQuery Lee desde BigQuery Escribe en BigQuery
Bigtable Lee desde Bigtable Escribe en Bigtable
Cloud Storage Lee desde Cloud Storage Escribir en Cloud Storage
Pub/Sub Lee desde Pub/Sub Escribe en Pub/Sub

Conectores de E/S compatibles con Google

En la siguiente tabla, se enumeran los conectores de E/S de Apache Beam compatibles con Dataflow. Para obtener una lista completa de los conectores de E/S de Apache Beam, incluidos los que desarrolló la comunidad de Apache Beam y que son compatibles con otros ejecutores, consulta Conectores de E/S en la documentación de Apache Beam.

Nombre del conector de E/S Java Python Go
AvroIO Admitido Admitido Admitido
BigQueryIO Admitido Admitido Admitido
BigTableIO Admitido Compatibilidad con el receptor Compatibilidad con el receptor
DatastoreIO Admitido Admitido Admitido
FhirIO (atención médica) Admitido No disponible Admitido
FileIO Admitido Admitido Admitido
GcsFileSystem Admitido Admitido Admitido
JdbcIO Admitido Compatibilidad entre lenguajes Compatibilidad entre lenguajes
KafkaIO Admitido Compatibilidad entre lenguajes Compatibilidad entre lenguajes
LocalFileSystem Admitido Admitido Admitido
ParquetIO Admitido Admitido Admitido
PubSubIO Admitido Admitido Admitido
SpannerIO Admitido Compatibilidad entre lenguajes Admitido
TextIO Admitido Admitido Admitido
TFRecordIO Admitido Admitido No disponible

¿Qué sigue?