Usa el muestreo de datos para observar datos de canalización

El muestreo de datos te permite observar los datos en cada paso de una canalización de Dataflow. Esta información puede ayudarte a depurar problemas de la canalización, ya que muestra las entradas y salidas reales en un trabajo en ejecución o completado.

Los usos para el muestreo de datos incluyen lo siguiente:

  • Durante el desarrollo, observa qué elementos se producen en toda la canalización.

  • Si una canalización muestra una excepción, visualiza los elementos que están correlacionados con esa excepción.

  • Cuando realices una depuración, visualiza los resultados de las transformaciones para asegurarte de que el resultado sea correcto.

  • Comprende el comportamiento de una canalización sin necesidad de examinar el código de la canalización.

  • Visualiza los elementos de muestra más adelante, después de que el trabajo finalice, o compara los datos muestreados con una ejecución anterior.

Descripción general

Dataflow puede muestrear datos de canalización de las siguientes formas:

  • Muestreo periódico. Con este tipo de muestreo, Dataflow recopila muestras mientras se ejecuta el trabajo. Puedes usar la muestra de datos para corroborar si tu canalización procesa elementos de la manera esperada, así como para diagnosticar problemas de entorno de ejecución, como teclas de acceso rápido o resultados incorrectos. Para obtener más información, consulta Usa el muestreo de datos periódico en este documento.

  • Muestreo de excepción. Con este tipo de muestreo, Dataflow recopila muestras si una canalización genera una excepción. Puedes usar las muestras para ver qué datos se procesaban cuando ocurrió la excepción. El muestreo de excepciones está habilitado de forma predeterminada y puede inhabilitarse. Para obtener más información, consulta Usa el muestreo de excepciones en este documento.

Dataflow escribe los elementos de muestra en la ruta de acceso de Cloud Storage, los cuales están especificados en la temp_location opción de canalización. Puedes ver los datos de muestra en la consola de Google Cloud, o examinar los archivos de datos sin procesar en Cloud Storage. Los archivos persisten en Cloud Storage hasta que los borres.

Los trabajadores de Dataflow ejecutan el muestreo de datos. El muestreo implica el mejor esfuerzo. Las muestras pueden descartarse si se producen errores transitorios.

Requisitos

Para usar el muestreo de datos, debes habilitar Runner v2. Para obtener más información, consulta Habilita Dataflow Runner v2.

Para ver los datos de muestra en la consola de Google Cloud, necesitas los siguientes permisos de administración de identidades y accesos:

  • storage.buckets.get
  • storage.objects.get
  • storage.objects.list

El muestreo periódico requiere el siguiente SDK de Apache Beam:

  • SDK de Apache Beam para Java de la versión 2.47.0 o una posterior
  • SDK de Apache Beam para Python de la versión 2.46.0 o una posterior
  • SDK de Apache Beam para Go de la versión 2.53.0 o posterior

El muestreo de excepción requiere el siguiente SDK de Apache Beam:

  • SDK de Apache Beam para Java de la versión 2.51.0 o posterior
  • SDK de Apache Beam para Python de la versión 2.51.0 o posterior
  • El SDK de Go para Apache Beam no admite el muestreo de excepciones.

A partir de estos SDK, Dataflow habilita el muestreo de excepciones para todos los trabajos de forma predeterminada.

Usa el muestreo de datos periódico

Esta sección describe cómo muestrear los datos de canalización de forma ininterrumpida mientras se ejecuta un trabajo.

Habilitar el muestreo de datos periódico

El muestreo periódico está inhabilitado de forma predeterminada. Para habilitarlo, configura la siguiente opción de canalización:

Java

--experiments=enable_data_sampling

Python

--experiments=enable_data_sampling

Go

--experiments=enable_data_sampling

Puedes configurar la opción de manera programática o mediante la línea de comandos. Para obtener más información, consulta Configura las opciones de canalización experimental.

Al ejecutar una plantilla de Dataflow, usa la marca additional-experiments para habilitar el muestreo de datos:

--additional-experiments=enable_data_sampling

Cuando los muestreos periódicos están habilitados, Dataflow recopila muestras de cada PCollection en el gráfico del trabajo. La tasa de muestreo es de aproximadamente una muestra cada 30 segundos.

Según el volumen de datos, el muestreo de datos periódico puede agregar una sobrecarga significativa al rendimiento. Por lo tanto, te recomendamos que solo habilites el muestreo periódico durante las pruebas y que lo inhabilites para las cargas de trabajo de producción.

Ver datos de muestra

Para ver los datos de muestra en la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Trabajos de Dataflow.

    Ir a Trabajos

  2. Selecciona un trabajo.

  3. Haz clic en en el panel inferior para expandir el panel de registros.

  4. Haz clic en la pestaña Muestreo de datos.

  5. En el campo Paso, selecciona un paso de canalización. También puedes seleccionar un paso en el gráfico del trabajo.

  6. En el campo Colección, elige un PCollection.

Si Dataflow recopiló muestras para ese PCollection, los datos de muestra aparecerán en la pestaña. Para cada muestra, la pestaña muestra la fecha de creación y el elemento de salida. El elemento de salida es una representación serializada del elemento de colección, incluidos los datos del elemento, la marca de tiempo y la información del período y el panel.

En los siguientes ejemplos, se muestran elementos de muestra.

Java

TimestampedValueInGlobalWindow{value=KV{way, [21]},
timestamp=294247-01-09T04:00:54.775Z, pane=PaneInfo{isFirst=true, isLast=true,
timing=ON_TIME, index=0, onTimeIndex=0}}

Python

(('THE', 1), MIN_TIMESTAMP, (GloblWindow,), PaneInfo(first: True, last: True,
timing: UNKNOWN, index: 0, nonspeculative_index: 0))

Go

KV<THE,1> [@1708122738999:[[*]]:{3 true true 0 0}]

En la siguiente imagen, se muestra cómo aparecen los datos de muestra en la consola de Google Cloud.

Datos de muestra en la consola de Google Cloud

Usa el muestreo de excepciones

Si tu canalización muestra una excepción no controlada, puedes ver la excepción y el elemento de entrada que se correlaciona con esa excepción. El muestreo de excepciones está habilitado de forma predeterminada cuando usas un SDK de Apache Beam compatible.

Consultar las excepciones

Para ver una excepción, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Trabajos de Dataflow.

    Ir a Trabajos

  2. Selecciona un trabajo.

  3. Para expandir el panel Registros, haz clic en Panel de activación en el panel Registros.

  4. Haz clic en la pestaña Muestreo de datos.

  5. En el campo Paso, selecciona un paso de canalización. También puedes seleccionar un paso en el gráfico del trabajo.

  6. En el campo Colección, elige un PCollection.

    La columna Exception contiene los detalles de la excepción. No hay un elemento de salida para una excepción. En su lugar, la columna Elemento de salida contiene el mensaje Failed to process input element: INPUT_ELEMENT, en el que INPUT_ELEMENT es el elemento de entrada correlacionado.

  7. Para ver la muestra de entrada y los detalles de excepción en una ventana nueva, haz clic en Abrir en nueva.

En la siguiente imagen, se muestra cómo aparece una excepción en la consola de Google Cloud.

Excepción de muestra en la consola de Google Cloud

Inhabilita el muestreo de excepciones

Para inhabilitar el muestreo de excepciones, establece la siguiente opción de canalización:

Java

--experiments=disable_always_on_exception_sampling

Python

--experiments=disable_always_on_exception_sampling

Puedes configurar la opción de manera programática o mediante la línea de comandos. Para obtener más información, consulta Configura las opciones de canalización experimental.

Al ejecutar una plantilla de Dataflow, usa la marca additional-experiments para inhabilitar el muestreo de excepciones:

--additional-experiments=disable_always_on_exception_sampling

Consideraciones de seguridad

Dataflow escribe los datos de muestra en un bucket de Cloud Storage que creas y administras. Usa las funciones de seguridad de Cloud Storage para proteger la seguridad de los datos. En particular, considera las siguientes medidas de seguridad adicionales:

También puedes ofuscar campos individuales en tu tipo de datos PCollection, de modo que el valor sin procesar no aparezca en la muestra de datos:

  • Python: Anula los métodos __repr__ o __str__.
  • Java: anula el método toString.

Sin embargo, no puedes ofuscar las entradas y salidas de los conectores de E/S, a menos que modifiques el código fuente del conector para hacerlo.

Facturación

Cuando Dataflow realiza un muestreo de datos, se te aplican cargos por el almacenamiento de datos de Cloud Storage así como por las operaciones de lectura y escritura realizadas en el mismo. Para obtener más información, consulta los Precios de Cloud Storage.

Cada trabajador de Dataflow escribe muestras por lotes, lo que genera una operación de lectura y una operación de escritura por lote.

Soluciona problemas

Esta sección contiene información sobre problemas comunes cuando se usa el muestreo de datos.

Error de permisos

Si no tienes permiso para ver las muestras, la consola de Google Cloud muestra el siguiente error:

You don't have permission to view a data sample.

Para resolver este error, verifica que tengas los permisos de IAM necesarios. Si el error persiste, es posible que estés sujeto a una política de denegación de IAM.

No veo ninguna muestra

Si no ves ninguna muestra, revisa los siguientes aspectos:

  1. Configura la opción enable_data_sampling para asegurarte de que el muestreo de datos esté habilitado. Consulta Habilita el muestreo de datos.
  2. Asegúrate de usar Runner v2.
  3. Asegúrate de que los trabajadores hayan iniciado. El muestreo no comienza hasta que comienzan los trabajadores.
  4. Asegúrate de que el trabajo y los trabajadores estén en buen estado.
  5. Verifica de nuevo las cuotas de Cloud Storage del proyecto. Si superas los límites de cuota de Cloud Storage, Dataflow no puede escribir la muestra de datos.

¿Qué sigue?