Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Entender los registros redactados
AWS Clean Rooms redacta los registros de Spark antes de exportarlos para que los registros exportados no revelen el contenido de los datos de un miembro ni identifiquen la tabla y las ubicaciones de almacenamiento de los datos de origen. AWS Clean Rooms reconstruye los registros y emite solo los campos que se sabe que son seguros para compartir. Parte de la información se conserva deliberadamente, incluidos los nombres de las columnas que lee una consulta.
La redacción no distingue entre los miembros. Ten en cuenta que tus propios nombres de tablas y valores de consulta se eliminen de los registros que exportes para tus propias consultas, en las mismas condiciones que la información de otro miembro. Los campos vacíos y de marcador de posición son normales y no indican que haya problemas con la exportación.
Qué contienen los registros exportados
Los registros exportados conservan la información necesaria para diagnosticar errores y problemas de rendimiento:
-
Tiempos: la duración de las tareas y etapas, el tiempo de ejecución, el tiempo de CPU, el tiempo de recolección de basura, el tiempo de deserialización y serialización de los resultados, el tiempo de espera aleatorio y el tiempo de escritura aleatoria se conservan con exactitud. Los tiempos son la principal señal para el análisis del rendimiento.
-
Identificadores y recuentos de ejecuciones de Spark: identificadores de trabajos, etapas, tareas e intentos, recuentos de particiones, recuentos de tareas, identificadores de ejecutores, nombres de host y puertos.
-
Estructura del plan de consultas: el árbol del plan físico, que incluye los nombres de los operadores
HashAggregateSortMergeJoin, comoExchange,, y, para que puedas ver la forma del plan y la forma en que el motor decidió ejecutar la consulta. Un nombre de operador que no es el de Spark aparece como[REDACTED]. -
Nombres de las columnas de origen: los nombres de las columnas provienen de una tabla que se está escaneando, para que puedas ver qué columnas se utilizan en los filtros, las uniones y las agregaciones. Los nombres que crea una consulta, como un alias, no se conservan. Para obtener más información, consulte Cómo se tratan los nombres de las columnas y las tablas.
-
Tipo de escaneo y formato de archivo: un operador de escaneo normalmente incluye el nombre de la tabla que se está leyendo. El nombre se sustituye por un formulario que identifica únicamente el tipo de escaneado y el formato del archivo, por ejemplo
Scan parquet, para que pueda seguir viendo cómo se leen los datos. Si el formato de archivo no es uno que AWS Clean Rooms reconozca, el operador aparecerá comoScansin formato. -
Clases de error: cuando se produce un error en una consulta, los registros identifican el tipo de error, pero no los datos que lo han provocado. Indican la clase de error de Spark, su código SQLSTATE y el mensaje estándar que Spark define para esa clase, mientras que los
<placeholder>tokens del mensaje no se rellenan porque los valores que los rellenarían provienen de los datos. Una transmisión fallida, por ejemplo, informa[CAST_INVALID_INPUT]y envía un mensaje en el que se describe que un valor de un tipo no se puede convertir a otro sin mostrar el valor. Cuando un error provoca otro, las clases de error de la cadena se registran juntas, hasta unos pocos niveles de profundidad. Un error que no se originó en Spark solo se notifica como un error ajeno a Spark, sin clase.Los errores de tareas individuales solo indican el tipo de error, por ejemplo.
ExceptionFailureNo tienen una clase de error propia. -
Configuración de Spark: ajustes cuyos valores son siempre números, tamaños o palabras clave fijas y que se necesitan con mayor frecuencia para diagnosticar un problema de rendimiento: núcleos y memoria de controladores y ejecutores, fracciones de memoria y configuraciones integradas, configuración de asignación dinámica, configuración de ejecución de consultas adaptativas, paralelismo predeterminado y recuento de particiones aleatorias, umbral de unión de transmisión, tamaño máximo de partición, configuración de compresión aleatoria, modo planificador y serializador. La mayoría de las demás configuraciones están redactadas porque los ajustes pueden contener rutas, identificadores y texto de consulta. También se omite una de estas opciones si su valor no es un número, un tamaño o una palabra clave simples.
-
Utilización de la memoria y volúmenes de datos: memoria de ejecución máxima, pérdida de memoria y disco, memoria de la JVM ejecutora, tamaños de datos en caché, recuentos de bloques aleatorios y cantidad de bytes y registros leídos y escritos, incluidos los volúmenes de lectura y escritura aleatorios. Estas cifras están redondeadas hacia abajo en lugar de ser exactas. Para obtener más información, consulte En qué se diferencian los registros redactados de los registros estándar de Spark.
-
Por qué se detuvo un albacea: una categoría para cada ejecutor que paró, por ejemplo, se quedó sin memoria, fue cerrado por el conductor, fue dado de baja o no respondió. Esta suele ser la forma más rápida de explicar por qué falló una consulta. Los registros también registran cualquier ejecutor o host en el que Spark haya dejado de programar el trabajo, lo que resulta útil cuando los errores se repiten en un solo lugar. Para obtener más información, consulte En qué se diferencian los registros redactados de los registros estándar de Spark.
-
Detalles sobre los errores de captura aleatoria: cuando una tarea no puede obtener los resultados de la búsqueda aleatoria, se conservan los identificadores de reproducción aleatoria, mapa, índice del mapa y reducción, junto con el ejecutor y el host contra los que se intentó realizar la búsqueda. Esto le permite distinguir los errores repetidos en una sola fuente, que suelen indicar que el ejecutor no responde, de los errores repartidos en muchas fuentes, que suelen indicar problemas transitorios en la red.
¿Qué está redactado
-
Valores de datos: valores literales de la consulta y valores de datos de cualquier tabla. Un predicado de filtro muestra qué columna se filtró, pero no el valor con el que se comparó.
-
Nombres de tablas y ubicaciones de almacenamiento: identificadores de tablas, nombres de bases de datos y rutas de Amazon S3.
-
Texto de la consulta: la sentencia SQL y cualquier descripción asociada a la consulta.
-
El texto del mensaje de error y los rastros de la pila: dado que un mensaje de error puede indicar el valor que provocó el error, se eliminan el texto del mensaje y los rastros de la pila. El nombre de la clase de excepción subyacente también está redactado, ya que una excepción lanzada por una función definida por el usuario lleva el nombre que eligió el autor de la consulta. En su lugar, se conserva la clase de error de Spark para la consulta y el trabajo. La razón por la que falló una etapa y la razón por la que se canceló una tarea también están redactadas.
-
Nombres que Spark registra para su propio trabajo: los nombres y los sitios de llamadas de las etapas y los conjuntos de datos almacenados en caché, así como el nombre de la aplicación. Se trata de campos de texto libre que pueden reflejar el nombre de una tabla o una ruta de almacenamiento. Por lo tanto, en Spark History Server, las etapas aparecen sin las descripciones que normalmente las identificarían, y en su lugar se localiza una etapa por su ID y su lugar en el plan.
-
Nombres de columna calculados y con alias: nombres que crea una consulta en lugar de leer de una tabla, porque el motor de consultas genera ese nombre a partir de la expresión y el nombre puede contener un valor. Aparecen como un identificador numérico, por ejemplo.
#42Para obtener más información, consulte Cómo se tratan los nombres de las columnas y las tablas. -
Detalles del escaneo: el esquema de lectura, los predicados de filtro aplicados en cada escaneo (filtros desplegados, filtros de particiones y filtros de datos) y la ubicación de los datos.
-
Enlaces a los registros de controladores y ejecutores: las URL de registro que Spark registra para cada ejecutor y para el controlador. En Spark History Server, los enlaces que normalmente abrirían un registro de controladores o ejecutores no están rellenados.
-
Identificadores de recursos y puntos finales de servicio: los ID de las AWS cuentas, los ARN (como los de las funciones y AWS KMS las claves de IAM) y las URL de los puntos finales de los servicios que AWS Clean Rooms llaman para ejecutar la consulta.
-
AWS detalles del servicio: nombres de AWS Clean Rooms clases, entradas de rutas de clases, configuración de JVM y propiedades de Hadoop y del sistema. Las propiedades de los trabajos también están redactadas, aparte de los identificadores que Spark History Server necesita para asociar los trabajos a la ejecución de la consulta a la que pertenecen.
Cómo se tratan los nombres de las columnas y las tablas
Los registros exportados conservan los nombres de las columnas que lee una consulta. Los nombres de las tablas y los alias de las columnas creados en la consulta están redactados. El nombre que crea una consulta se genera a partir de la expresión a la que da nombre, y ese nombre generado puede contener un valor de la consulta: SELECT 'confidential' produce una columna denominada. confidential Por lo tanto, un nombre solo aparece cuando se puede rastrear hasta una columna de una tabla digitalizada. Todos los demás nombres se sustituyen por un identificador numérico.
Por ejemplo, fíjese en la consulta siguiente.
SELECT user_id, SUM(amount) AS total FROM sales WHERE region = 'us-west' GROUP BY user_id
Los registros exportados lo representan de la siguiente manera.
| Elemento de la consulta | En los registros exportados |
|---|---|
Las columnas user_idamount, y region |
Se presentan por nombre, para que puedas ver los elementos por los que se agrupó, sumó y filtró la consulta |
La tablasales, su base de datos y su ubicación de almacenamiento |
No presente |
El valor 'us-west' |
Sustituido por [REDACTED] |
El alias total |
Se reemplazó por un identificador numérico porque la consulta creó el nombre en lugar de leerlo desde una tabla |
En qué se diferencian los registros redactados de los registros estándar de Spark
Los recuentos de filas y los volúmenes de datos son aproximados
Los recuentos de registros, los volúmenes de bytes, los tamaños excesivos y las mediciones de memoria máxima se redondean a la baja en un orden de magnitud, porque un recuento exacto puede revelar el tamaño de los datos de otro miembro. Una tarea en la que se leen 1342 registros arroja 1000. Las mediciones por debajo de 100 indican que son 0.
Como todas las cifras se redondean hacia abajo, una tarea que informa 100 y una que informa 1000 pueden haber leído casi la misma cantidad de registros. Trate las cifras que difieren solo en un orden de magnitud con cautela; las diferencias más grandes, como 1000 frente a 10 000 000, siguen indicando de forma fiable que están sesgadas.
Los valores censurados adoptan más de una forma
En el plan de consulta, un valor censurado aparece como texto literal. [REDACTED] En otras partes de los registros, un campo redactado suele estar vacío. Puede tratarse de una cadena en blanco, de una lista vacía o de un valor totalmente ausente, para que Spark History Server pueda seguir leyendo el registro. Ambas formas significan lo mismo.
Los planes de consulta no utilizan una sintaxis de operador conocida
Las expresiones del plan se escriben como llamadas a funciones y no en notación matemática. Una comparación aparece como EqualTo(#12, [REDACTED]) en lugar de(a = 5). Los nombres de las funciones también aparecen en este formulario y los nombres de las funciones definidas por el usuario no aparecen en absoluto.
Solo se incluye el plan físico
Los registros exportados contienen el plan físico. No contienen los planes lógicos analizados, analizados u optimizados que normalmente lo acompañan.
Per-task las métricas están redactadas
El gráfico del plan muestra las métricas que informa cada operador, como el número de filas de salida. Las métricas que notifican las tareas individuales no muestran ningún valor, porque se eliminan las cifras por tarea que contienen. Para los números a nivel de tarea, en su lugar, usa las métricas por tarea en la vista por etapas.
Las métricas de Spark Driver se redondean a la baja
Las métricas que Spark calcula sobre el conductor, incluidas las de retransmisiones, escaneos y escrituras, muestran un valor, pero se redondean a la baja a un orden de magnitud por la misma razón que ocurre con el recuento de registros y los volúmenes de datos: una cifra exacta puede revelar el tamaño de los datos de otro miembro.
Solo se exporta el registro de eventos
La exportación contiene el registro de eventos de Spark. No contiene la salida libre del controlador y el ejecutor que Spark escribe junto con ella, porque una sola línea de esa salida puede contener un nombre de tabla, una ruta de almacenamiento o un valor de datos. El diagnóstico se debe realizar desde el registro de eventos.
Los errores del ejecutor muestran mensajes de error genéricos
Dado que el motivo por el que se detiene un ejecutor puede contener detalles del AWS Clean Rooms servicio, los registros muestran, en cambio, un mensaje de error general, como una salida de memoria insuficiente, un cierre iniciado por el controlador, un ejecutor fuera de servicio o la pérdida de un proceso. Este registro es específico AWS Clean Rooms y no es un evento estándar de Spark, por lo que es posible que Spark History Server y otras herramientas no lo muestren. Si no lo ves, puedes encontrarlo en el archivo de registro de eventos exportado.
Los registros no reconocidos se censuran de forma predeterminada
Si un registro no es un registro que AWS Clean Rooms reconozca, todo su texto se reemplaza por uno[REDACTED], incluidos los nombres de campo, y todos sus números se reemplazan por cero. Solo se conserva el tipo de registro. Este registro no contiene información de diagnóstico.