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/S | Leer | Escritura |
---|---|---|
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?
- Lee la documentación de Apache Beam para los conectores de E/S.