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/S | Leer | Escritura |
---|---|---|
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
- Consulta la documentación de Apache Beam sobre conectores de entrada/salida.