Usar el muestreo de datos para observar los datos de la canalización

El muestreo de datos te permite observar los datos en cada paso de un flujo de procesamiento de Dataflow. Esta información puede ayudarte a depurar problemas de tu canal mostrando las entradas y salidas reales de una tarea en curso o completada.

El muestreo de datos se puede usar para lo siguiente:

  • Durante el desarrollo, consulta qué elementos se producen a lo largo de la canalización.

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

  • Cuando depure, consulte las salidas de las transformaciones para asegurarse de que sean correctas.

  • Entender el comportamiento de una canalización sin tener que examinar el código de la canalización.

  • Puedes ver los elementos muestreados más adelante, cuando finalice el trabajo, o comparar los datos muestreados con una ejecución anterior.

Información general

Dataflow puede muestrear los datos de las canalizaciones de las siguientes formas:

  • Muestreo periódico Con este tipo de muestreo, Dataflow recoge muestras mientras se ejecuta el trabajo. Puedes usar los datos muestreados para comprobar si tu flujo de procesamiento trata los elementos según lo previsto y para diagnosticar problemas de tiempo de ejecución, como teclas de acceso rápido o salidas incorrectas. Para obtener más información, consulta la sección Usar el muestreo de datos periódico de este documento.

  • Muestreo de excepciones. Con este tipo de muestreo, Dataflow recoge muestras si una canalización genera una excepción. Puedes usar las muestras para ver los datos que se estaban procesando cuando se produjo la excepción. El muestreo de excepciones está habilitado de forma predeterminada y se puede inhabilitar. Para obtener más información, consulta la sección Usar el muestreo de excepciones de este documento.

Dataflow escribe los elementos muestreados en la ruta de Cloud Storage especificada por la opción de canalización gcpTempLocation para Java y temp_location para Python y Go. Puedes ver los datos muestreados en la consola Google Cloud o examinar los archivos de datos sin procesar en Cloud Storage. Los archivos se conservan en Cloud Storage hasta que los eliminas.

Los trabajadores de Dataflow se encargan de ejecutar el muestreo de datos. El muestreo se realiza de la mejor forma posible. Es posible que se omitan muestras si se producen errores transitorios.

Requisitos

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

Para ver los datos muestreados en la Google Cloud consola, necesitas los siguientes permisos de gestió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 2.47.0 o una versión posterior
  • SDK de Apache Beam para Python 2.46.0 o una versión posterior
  • SDK de Go de Apache Beam 2.53.0 o una versión posterior

Para muestrear excepciones, se necesita el siguiente SDK de Apache Beam:

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

Con estos SDKs, Dataflow habilita el muestreo de excepciones para todos los trabajos de forma predeterminada.

Usar el muestreo de datos periódico

En esta sección se describe cómo muestrear datos de la canalización de forma continua mientras se ejecuta un trabajo.

Habilitar el muestreo periódico de datos

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

Java

--experiments=enable_data_sampling

Python

--experiments=enable_data_sampling

Go

--experiments=enable_data_sampling

Puedes definir la opción mediante programación o con la línea de comandos. Para obtener más información, consulta Definir opciones de canalización experimentales.

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

--additional-experiments=enable_data_sampling

Cuando el muestreo periódico está habilitado, Dataflow recoge muestras de cada PCollection del gráfico de la tarea. La frecuencia de muestreo es de aproximadamente una muestra cada 30 segundos.

En función del volumen de datos, el muestreo periódico de datos puede añadir una sobrecarga de rendimiento significativa. Por lo tanto, te recomendamos que solo habilites el muestreo periódico durante las pruebas y que lo inhabilites en las cargas de trabajo de producción.

Ver datos muestreados

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

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

    Ir a Tareas

  2. Selecciona un trabajo.

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

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

  5. En el campo Paso, seleccione un paso de la canalización. También puedes seleccionar un paso en el gráfico de tareas.

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

Si Dataflow ha recogido muestras de ese PCollection, los datos muestreados aparecerán en la pestaña. En 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 de la ventana y el panel.

En los siguientes ejemplos se muestran elementos muestreados.

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 muestreados en laGoogle Cloud consola.

Datos muestreados en la consola Google Cloud

Usar el muestreo de excepciones

Si tu canal genera una excepción no controlada, puedes ver tanto la excepción como el elemento de entrada que está correlacionado con ella. El muestreo de excepciones está habilitado de forma predeterminada cuando se usa un SDK de Apache Beam compatible.

Ver excepciones

Para ver una excepción, sigue estos pasos:

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

    Ir a Tareas

  2. Selecciona un trabajo.

  3. Para desplegar el panel Registros, haz clic en Mostrar panel en el panel Registros.

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

  5. En el campo Paso, seleccione un paso de la canalización. También puedes seleccionar un paso en el gráfico de tareas.

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

    La columna Excepción contiene los detalles de la excepción. No hay ningún 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, donde INPUT_ELEMENT es el elemento de entrada correlacionado.

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

En la siguiente imagen se muestra cómo aparece una excepción en la consolaGoogle Cloud .

Excepción muestreada en la consola Google Cloud

Inhabilitar el muestreo de excepciones

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

Java

--experiments=disable_always_on_exception_sampling

Python

--experiments=disable_always_on_exception_sampling

Puedes definir la opción mediante programación o con la línea de comandos. Para obtener más información, consulta Definir opciones de canalización experimentales.

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

--additional-experiments=disable_always_on_exception_sampling

Cuestiones sobre seguridad

Dataflow escribe los datos muestreados en un segmento de Cloud Storage que creas y gestionas. Usa las funciones de seguridad de Cloud Storage para proteger tus datos. En concreto, ten en cuenta las siguientes medidas de seguridad adicionales:

También puede ofuscar campos individuales en su tipo de datos PCollection para que el valor sin procesar no aparezca en los datos muestreados:

  • Python: anula el método __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 cobra por el almacenamiento de datos en Cloud Storage y por las operaciones de lectura y escritura en Cloud Storage. Consulta más información en la página Precios de Cloud Storage.

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

Solución de problemas

En esta sección se incluye información sobre los problemas habituales que se producen al usar el muestreo de datos.

Error de permisos

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

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

Para resolver este error, comprueba que tienes los permisos de gestión de identidades y accesos necesarios. Si el error persiste, es posible que estés sujeto a una política de denegación de gestión de identidades y accesos.

No veo ninguna muestra

Si no ves ninguna muestra, comprueba lo siguiente:

  1. Asegúrate de que el muestreo de datos esté habilitado configurando la opción enable_data_sampling. Consulte Habilitar el muestreo de datos.
  2. Asegúrate de que estás usando Runner v2.
  3. Asegúrate de que los trabajadores hayan empezado. El muestreo no empieza hasta que se inician los trabajadores.
  4. Asegúrate de que el trabajo y los trabajadores estén en buen estado.
  5. Comprueba las cuotas de Cloud Storage del proyecto. Si supera los límites de cuota de Cloud Storage, Dataflow no podrá escribir los datos de muestra.
  6. El muestreo de datos no puede muestrear iterables. No hay muestras disponibles de estos tipos de streams.

Siguientes pasos