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:
En la consola de Google Cloud, ve a la página Trabajos de Dataflow.
Selecciona un trabajo.
Haz clic en keyboard_capslock en el panel inferior para expandir el panel de registros.
Haz clic en la pestaña Muestreo de datos.
En el campo Paso, selecciona un paso de canalización. También puedes seleccionar un paso en el gráfico del trabajo.
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.
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.
Visualiza las excepciones
Para ver una excepción, sigue estos pasos:
En la consola de Google Cloud, ve a la página Trabajos de Dataflow.
Selecciona un trabajo.
Para expandir el panel Registros, haz clic en keyboard_capslock Panel de activación en el panel Registros.
Haz clic en la pestaña Muestreo de datos.
En el campo Paso, selecciona un paso de canalización. También puedes seleccionar un paso en el gráfico del trabajo.
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.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.
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:
- Usa una clave de encriptación administrada por el cliente (CMEK) para encriptar el bucket de Cloud Storage. Si deseas obtener más información sobre cómo elegir una opción de encriptación, consulta Elige la encriptación adecuada para tus necesidades.
- Configura un tiempo de actividad (TTL) en el bucket de Cloud Storage para que los archivos de datos se borren de forma automática después de un período. Para obtener más información, consulta Establece la configuración del ciclo de vida de un bucket.
- Usa el principio de privilegio mínimo cuando asignes permisos de IAM al bucket de Cloud Storage.
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:
- Configura la opción
enable_data_sampling
para asegurarte de que el muestreo de datos esté habilitado. Consulta Habilita el muestreo de datos. - Asegúrate de usar Runner v2.
- Asegúrate de que los trabajadores hayan iniciado. El muestreo no comienza hasta que comienzan los trabajadores.
- Asegúrate de que el trabajo y los trabajadores estén en buen estado.
- 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.
- El muestreo de datos no puede muestrear desde iterables. Las muestras de estos tipos de transmisiones no están disponibles.