Plantillas de Dataflow

Las plantillas de Dataflow te permiten empaquetar un flujo de procesamiento de Dataflow para desplegarlo. Cualquier persona que tenga los permisos correctos podrá usar la plantilla para implementar la canalización empaquetada. Puedes crear tus propias plantillas de Dataflow personalizadas. Además, Google ofrece plantillas prediseñadas para situaciones habituales.

Ventajas

Las plantillas ofrecen varias ventajas con respecto al despliegue directo de un flujo de procesamiento en Dataflow:

  • Las plantillas separan el diseño del flujo de procesamiento de la implementación. Por ejemplo, un desarrollador puede crear una plantilla y un científico de datos puede implementarla más adelante.
  • Las plantillas pueden tener parámetros que te permitan personalizar la canalización cuando despliegues la plantilla.
  • Puedes desplegar una plantilla mediante la consola, la CLI de Google Cloud o llamadas a la API REST. Google Cloud No necesitas un entorno de desarrollo ni ninguna dependencia de canalización instalada en tu máquina local.
  • Una plantilla es un artefacto de código que se puede almacenar en un repositorio de control de versiones y usar en flujos de procesamiento de integración continua y entrega continua (CI/CD).

Plantillas proporcionadas por Google

Google ofrece varias plantillas de Dataflow predefinidas y de código abierto que puedes usar en situaciones habituales. Para obtener más información sobre las plantillas disponibles, consulta el artículo sobre las plantillas proporcionadas por Google.

Comparar plantillas Flex y plantillas clásicas

Dataflow admite dos tipos de plantillas: las flexibles, que son más recientes, y las clásicas. Si vas a crear una plantilla de Dataflow, te recomendamos que la crees como plantilla flex.

Con una plantilla flexible, la canalización se empaqueta como una imagen de Docker en Artifact Registry, junto con un archivo de especificación de plantilla en Cloud Storage. La especificación de la plantilla contiene un puntero a la imagen de Docker. Cuando ejecutas la plantilla, el servicio Dataflow inicia una VM de inicio, extrae la imagen de Docker y ejecuta el flujo de procesamiento. El gráfico de ejecución se crea dinámicamente en función de los parámetros de tiempo de ejecución que proporcione el usuario. Para usar la API y lanzar un trabajo que utilice una plantilla Flex, usa el método projects.locations.flexTemplates.launch.

Una plantilla clásica contiene la serialización JSON de un gráfico de tareas de Dataflow. El código de la canalización debe envolver los parámetros de tiempo de ejecución en la interfaz ValueProvider. Esta interfaz permite a los usuarios especificar valores de parámetros cuando implementan la plantilla. Para usar la API y trabajar con plantillas clásicas, consulta la projects.locations.templates documentación de referencia de la API.

Las plantillas flexibles tienen las siguientes ventajas con respecto a las clásicas:

  • A diferencia de las plantillas clásicas, las plantillas flexibles no requieren la interfaz ValueProvider para los parámetros de entrada. No todas las fuentes y receptores de Dataflow admiten ValueProvider.
  • Mientras que las plantillas clásicas tienen un gráfico de tareas estático, las plantillas Flex pueden crear el gráfico de tareas de forma dinámica. Por ejemplo, la plantilla puede seleccionar un conector de E/S diferente en función de los parámetros de entrada.
  • Una plantilla flexible puede realizar un preprocesamiento en una máquina virtual (VM) durante la construcción de la canalización. Por ejemplo, puede validar los valores de los parámetros de entrada.

Flujo de trabajo de plantilla

Para usar plantillas de Dataflow, debe seguir estos pasos generales:

  1. Los desarrolladores configuran un entorno de desarrollo y desarrollan su canal. El entorno incluye el SDK de Apache Beam y otras dependencias.
  2. En función del tipo de plantilla (Flex o clásica):
    • En el caso de las plantillas Flex, los desarrolladores empaquetan la canalización en una imagen Docker, transfieren la imagen a Artifact Registry y suben un archivo de especificación de plantilla a Cloud Storage.
    • En el caso de las plantillas clásicas, los desarrolladores ejecutan el flujo de procesamiento, crean un archivo de plantilla y almacenan la plantilla en Cloud Storage.
  3. Otros usuarios envían una solicitud al servicio Dataflow para ejecutar la plantilla.
  4. Dataflow crea un flujo de procesamiento a partir de la plantilla. La canalización puede tardar entre cinco y siete minutos en empezar a ejecutarse.

Establecer permisos de gestión de identidades y accesos

Los trabajos de Dataflow, incluidos los que se ejecutan a partir de plantillas, usan dos cuentas de servicio de IAM:

  • El servicio Dataflow usa una cuenta de servicio de Dataflow para manipular recursos de Google Cloud , como crear máquinas virtuales.
  • Las VMs de trabajador de Dataflow usan una cuenta de servicio de trabajador para acceder a los archivos y otros recursos de tu canalización. Esta cuenta de servicio necesita acceder a todos los recursos a los que haga referencia el trabajo de la canalización, incluidos el origen y el receptor que utilice la plantilla. Para obtener más información, consulta Acceder Google Cloud a recursos.

Asegúrate de que estas dos cuentas de servicio tengan los roles adecuados. Para obtener más información, consulta Seguridad y permisos de los flujos de datos.

Requisitos de la versión del SDK de Apache Beam

Para crear tus propias plantillas, asegúrate de que tu versión del SDK de Apache Beam admita la creación de plantillas.

Java

Para crear plantillas con el SDK de Apache Beam 2.x para Java, debes tener la versión 2.0.0-beta3 o una posterior.

Python

Para crear plantillas con el SDK de Apache Beam 2.x para Python, debes tener la versión 2.0.0 o una posterior.

Para ejecutar plantillas con Google Cloud CLI, debes tener la versión 138.0.0 o una posterior de Google Cloud CLI.

Ampliar plantillas

Puedes crear tus propias plantillas ampliando las plantillas de Dataflow de código abierto. Por ejemplo, en una plantilla que usa una duración de ventana fija, los datos que llegan fuera de la ventana se pueden descartar. Para evitar este comportamiento, utilice el código de la plantilla como base y modifíquelo para invocar la operación .withAllowedLateness.

Siguientes pasos