La E/S administrada permite que Dataflow administre conectores de E/S específicos que se usan en las canalizaciones de Apache Beam. La E/S administrada simplifica la administración de las canalización que se integran con fuentes y receptores compatibles.
El E/S administrado consta de dos componentes que funcionan juntos:
Una transformación de Apache Beam que proporciona una API común para crear conectores de E/S (fuentes y receptores).
Un servicio de Dataflow que administra estos conectores de E/S en tu nombre, incluida la capacidad de actualizarlos independientemente de la versión de Apache Beam.
Entre las ventajas de la E/S administrada, se incluyen las siguientes:
Actualizaciones automáticas: Dataflow actualiza automáticamente los conectores de E/S administrados en tu canalización. Eso significa que tu canalización recibe correcciones de seguridad, mejoras de rendimiento y correcciones de errores para estos conectores, sin necesidad de realizar cambios en el código. Para obtener más información, consulta Actualizaciones automáticas.
API coherente: Tradicionalmente, los conectores de E/S en Apache Beam tienen APIs distintas, y cada conector se configura de una manera diferente. El E/S administrado proporciona una sola API de configuración que usa propiedades clave-valor, lo que genera un código de canalización más simple y coherente. Para obtener más información, consulta la API de Configuration.
Requisitos
Los siguientes SDKs admiten la E/S administrada:
- SDK de Apache Beam para Java, versión 2.58.0 o posterior
- SDK de Apache Beam para Python versión 2.61.0 o posterior
El servicio de backend requiere Dataflow Runner v2. Si no está habilitado Runner v2, tu canalización seguirá ejecutándose, pero no obtendrá los beneficios del servicio de E/S administrado.
Actualizaciones automáticas
Las canalizaciones de Dataflow con conectores de E/S administradas usan automáticamente la versión confiable más reciente del conector, de la siguiente manera:
Cuando envías un trabajo, Dataflow usa la versión más reciente del conector que se probó y funciona bien.
En el caso de los trabajos de transmisión, Dataflow busca actualizaciones cada vez que inicias un trabajo de reemplazo y usa automáticamente la versión más reciente que se sabe que funciona. Dataflow realiza esta verificación incluso si no cambias ningún código en el trabajo de reemplazo.
No tienes que preocuparte por actualizar manualmente el conector ni la versión de Apache Beam de tu canalización.
En el siguiente diagrama, se muestra el proceso de actualización. El usuario crea una canalización de Apache Beam con la versión X del SDK. Cuando el usuario envía el trabajo, Dataflow verifica la versión de la E/S administrada y la actualiza a la versión Y.
El proceso de actualización agrega alrededor de dos minutos al tiempo de inicio de una tarea. Para verificar el estado de las operaciones de E/S administradas, busca entradas de registro que incluyan la cadena "Managed Transform(s)
".
API de configuración
La E/S administrada es una transformación de Apache Beam llave en mano que proporciona una API coherente para configurar fuentes y receptores.
Para crear cualquier fuente o destino compatible con la E/S administrada, usa la clase Managed
en Java. Especifica qué fuente o receptor creará una instancia y pasa un conjunto de parámetros de configuración, similar al siguiente:
Map config = ImmutableMap.<String, Object>builder()
.put("config1", "abc")
.put("config2", 1);
pipeline.apply(Managed.read(/*Which source to read*/).withConfig(config))
.getSinglePCollection();
También puedes pasar los parámetros de configuración como un archivo YAML. Para obtener un ejemplo de código completo, consulta Lee desde Apache Iceberg.
Destinos dinámicos
Para algunos sumideros, el conector de E/S administrado puede seleccionar de forma dinámica un destino según los valores de campo en los registros entrantes.
Para usar destinos dinámicos, proporciona una cadena de plantilla para el destino. La cadena de plantilla puede incluir nombres de campos dentro de llaves, como "tables.{field1}"
. En el entorno de ejecución, el conector sustituye el valor del campo por cada registro entrante para determinar el destino de ese registro.
Por ejemplo, supongamos que tus datos tienen un campo llamado airport
. Puedes configurar el destino como "flights.{airport}"
. Si airport
=SFO
, el registro se escribe en flights.SFO
. Para los campos anidados, usa la notación de puntos. Por ejemplo: {top.middle.nested}
.
Filtros
Te recomendamos filtrar ciertos campos antes de que se escriban en la
tabla de destino. Para los sumideros que admiten destinos dinámicos, puedes usar los parámetros drop
, keep
o only
para este fin. Estos parámetros te permiten incluir metadatos de destino en los registros de entrada, sin escribirlos en el destino.
Puedes establecer como máximo uno de estos parámetros para un sumidero determinado.
Parámetro de configuración | Tipo de datos | Descripción |
---|---|---|
drop |
lista de cadenas | Es una lista de nombres de campos que se quitarán antes de escribir en el destino. |
keep |
lista de cadenas | Es una lista de nombres de campos que se conservarán cuando se escriba en el destino. Se descartan los demás campos. |
only |
string | Es el nombre de exactamente un campo que se usará como el registro de nivel superior para escribir en el destino. Se descartan todos los demás campos. Este campo debe ser de tipo fila. |
Fuentes y receptores compatibles
La E/S administrada admite las siguientes fuentes y receptores.