es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede abrir o consultar archivos .parquet debido a una columna corrupta.

Estoy enviando datos telemétricos JSON desde Azure Stream Analytics a Azure Data Lake Gen2 serializados como archivos .parquet. A partir del Data Lake, luego he creado una vista en mi Azure Synapse Serverless SQL pool a la que puedo conectarme y consultar datos para informes.

De vez en cuando, ejecutaré una consulta y obtendré el siguiente error:

Error al manejar el archivo externo: ‘Metadatos no válidos en el archivo parquet. El número de filas en los metadatos no coincide con el número real de filas en el archivo parquet’. Nombre de archivo/tabla externa: ‘https://test123.dfs.core.windows.net/devicetelemetry/2021/12/03/20/-1875592941d9a0239529f04e1eb587b83d50bbb5901.parquet’.

Cuando intento abrir el archivo .parquet en cuestión con “Apache Parquet Viewer” u cualquier otro visualizador de parquet, muestra un error y se niega a abrir el archivo, quejándose de que la columna denominada ‘data’ no está definida. La columna de datos es una cadena JSON con diversas lecturas de sensores de dispositivos IoT.

Mi consulta de Stream Analytics que envía datos a mi ADLS se ve así:

SELECT
Tel.identities.corporationId AS corporationId, Tel.identities.deviceId,
Tel.deviceTelemetry.version, Tel.deviceTelemetry.TimeStamp AS dateTimeStamp,
Tel.deviceTelemetry.data
INTO
deviceTelemetryADLS
FROM
data AS Tel
WHERE Tel.deviceTelemetry.data IS NOT null

Pregunta

¿No garantizaría la cláusula WHERE utilizada aquí que los datos estén siempre presentes? De lo contrario, ¿no se enviarían? ¿De qué otra manera se corrompen mis archivos .parquet?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La cláusula WHERE utilizada en la consulta de StreamAnalytics asegura que solo se envíen a ADLS los eventos con valores no nulos para el campo “data”. Sin embargo, no garantiza que todos los datos sean válidos y compatibles con el formato Parquet.

    El mensaje de error indica que hay una discrepancia entre los metadatos y los datos reales en el archivo Parquet, lo que sugiere que el archivo en sí está corrupto. Es posible que se hayan enviado a ADLS algunos eventos con cadenas JSON no válidas o tipos incompatibles, que posteriormente se serializaron como archivos .parquet, lo que provocó la corrupción.

    Para evitar este tipo de problemas, es importante asegurarse de que los datos que se envían a ADLS sean válidos y compatibles con el formato Parquet. Esto se puede lograr realizando una validación de datos y aplicando comprobaciones de compatibilidad de esquema antes de enviar los datos. Además, se recomienda supervisar la canalización de datos en busca de errores o anomalías y realizar un mantenimiento y copias de seguridad regulares de los datos para evitar pérdidas de datos.

Comments are closed.