Unable to load .parquet files from blobstorage in Azure Machine Learning Studio

Ivet Rafegas Fonoll 0 Puntos de reputación
2025-02-13T11:52:19.78+00:00

Hi!

We have encountered an issue that we suspect might be due to an error in Azure’s libraries.

Within our blob storage, we have generated a series of .parquet files. Each file is approximately 250MB in size and contains structured data with around 69,000,000 rows and 9 columns.

We created a dataset of the Dataset class created as follows:

dataset = Dataset.Tabular.from_parquet_files(path=paths, set_column_types=schema, validate=False)

 

and loaded in the following manner:

dataset = dataset.with_timestamp_columns(timestamp=time_column).time_after(pd.Timestamp(min_date), include_boundary=True)

 

When we attempt to read this file using the operation:

df = dataset.to_pandas_dataframe().reset_index(drop=True)

 

we encounter the following error:

Error Message: ScriptExecutionException was caused by OutOfMemoryException.   Process ran out of memory while materializing partition data for partition: 0. Already written stream size: 0     Array dimensions exceeded supported range. | session_id=xxxxxxxxxx ErrorResponse  {     "error": {         "message": "Execution failed with error message: ScriptExecutionException was caused by OutOfMemoryException.\n  Process ran out of memory while materializing partition data for partition: 0. Already written stream size: 0\n    Failed due to inner exception of type: OutOfMemoryException\n| session_id=xxxxxxxxxx ErrorCode: ScriptExecution.OutOfMemory"     }

this happens when our environment uses azureml-defaults==1.53.0.

 

However, when we update such library to azureml-defaults==1.59.0 we encounter another error:

=> Failed with execution error: tbd   ExecutionError(DataMaterializationError(ExternalError { message: "Parquet argument error: Parquet error: index overflow decoding byte array", source: None })) Error Message: Got unexpected error during data materialization: Parquet argument error: Parquet error: index overflow decoding byte array. .| session_id=xxxxxxxxxx   ErrorResponse  {     "error": {         "message": "Execution failed with error message: Got unexpected error during data materialization: Parquet argument error: Parquet error: index overflow decoding byte array.| session_id=xxxxxxxxxx ErrorCode: ScriptExecution.WriteStreams.Unexpected"     } }

 

 

The machine in question is barely consuming any memory, which leads us to suspect that this might be an error in the library. However, we might be making a mistake that we are unable to identify. Could you please advise us on this matter? Thank you very much.

 

Best regards,

Azure
Azure
Plataforma e infraestructura de informática en la nube para crear, implementar y administrar aplicaciones y servicios a través de una red mundial de centros de datos administrados por Microsoft.
568 preguntas
0 comentarios No hay comentarios
{count} votos

2 respuestas

Ordenar por: Muy útil
  1. Jonathan Pereira Castillo 14,535 Puntos de reputación Proveedor de Microsoft
    2025-02-13T18:10:01.6733333+00:00

    ¡Hola Ivet Rafegas Fonoll!

    Bienvenido a Microsoft Q&A.

    Entiendo que estás enfrentando problemas al cargar archivos .parquet desde Azure Blob Storage en Azure Machine Learning Studio. Aquí tienes una guía detallada para solucionar este problema:

    1. Gestión de Memoria y Particionamiento

    Dado el tamaño de tus archivos .parquet (250MB cada uno con 69,000,000 filas y 9 columnas), es posible que la asignación de memoria sea insuficiente. Aquí hay algunos pasos para gestionar la memoria de manera más efectiva:

    • Aumentar la Asignación de Memoria: Asegúrate de que tu instancia de cómputo tenga suficiente memoria. Es posible que necesites actualizar a un tipo de instancia más grande.
    • Particionamiento de Datos: Considera particionar tus datos en fragmentos más pequeños. Esto se puede hacer especificando particiones al crear el conjunto de datos.

    2. Optimización de la Carga de Datos

    Puedes optimizar la forma en que cargas los datos utilizando Dask o PySpark, que están diseñados para manejar grandes conjuntos de datos de manera más eficiente:

    import dask.dataframe as dd
    # Cargar archivos parquet usando Dask
    df = dd.read_parquet('ruta_a_los_archivos_parquet/*.parquet')
    

    3. Uso de Azure Data Factory

    Azure Data Factory puede ser utilizado para preprocesar y transformar tus datos antes de cargarlos en Azure Machine Learning Studio. Esto puede ayudar a gestionar grandes conjuntos de datos de manera más eficiente.

    4. Actualización de Bibliotecas

    Has mencionado problemas con diferentes versiones de azureml-defaults. Asegúrate de que todas las bibliotecas relacionadas sean compatibles y estén actualizadas:

    pip install --upgrade azureml-core azureml-dataprep
    

    5. Manejo de Errores Específicos

    • OutOfMemoryException: Esto generalmente indica que el conjunto de datos es demasiado grande para caber en la memoria. Considera usar fragmentación o marcos de computación distribuida como Dask o PySpark.
    • Parquet Argument Error: Esto podría deberse a archivos corruptos o problemas con la biblioteca Parquet. Asegúrate de que tus archivos Parquet estén correctamente formateados y no estén corruptos.

    6. Mejores Prácticas para Cargar Datos

    Consulta la documentación de Azure Machine Learning para conocer las mejores prácticas sobre cómo cargar y manejar grandes conjuntos de datos.

    Código de Ejemplo para Cargar Datos de Manera Eficiente

    Aquí tienes un ejemplo de cómo podrías cargar tus datos usando Dask:

    import dask.dataframe as dd
    # Cargar archivos parquet usando Dask
    df = dd.read_parquet('ruta_a_los_archivos_parquet/*.parquet')
    # Convertir a dataframe de pandas si es necesario
    pandas_df = df.compute()
    

    Recursos Adicionales

    Tutorial: upload, access, and explore your data - Azure Machine Learning 

    Create Azure Machine Learning datasets

    Espero que estos consejos ayuden a resolver el problema. Si necesitas más asistencia, estoy a tu disposición.

    Saludos,

    Jonathan.

    ----------*

    Tu opinión es muy importante para nosotros! Si esta respuesta resolvió tu consulta, por favor haz clic en ''. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.


  2. Jonathan Pereira Castillo 14,535 Puntos de reputación Proveedor de Microsoft
    2025-02-18T17:11:35.8233333+00:00

    Hola

    Entiendo que estás enfrentando problemas al cargar archivos .parquet desde Azure Blob Storage en Azure Machine Learning Studio. Aquí tienes una guía detallada para solucionar este problema:

    1. Gestión de Memoria y Particionamiento

    Dado el tamaño de tus archivos .parquet (250MB cada uno con 69,000,000 filas y 9 columnas), es posible que la asignación de memoria sea insuficiente. Aquí hay algunos pasos para gestionar la memoria de manera más efectiva:

    • Aumentar la Asignación de Memoria: Asegúrate de que tu instancia de cómputo tenga suficiente memoria. Es posible que necesites actualizar a un tipo de instancia más grande.
    • Particionamiento de Datos: Considera particionar tus datos en fragmentos más pequeños. Esto se puede hacer especificando particiones al crear el conjunto de datos.

    2. Optimización de la Carga de Datos

    Puedes optimizar la forma en que cargas los datos utilizando Dask o PySpark, que están diseñados para manejar grandes conjuntos de datos de manera más eficiente:

    import dask.dataframe as dd
    # Cargar archivos parquet usando Dask
    df = dd.read_parquet('ruta_a_los_archivos_parquet/*.parquet')
    

    3. Uso de Azure Data Factory

    Azure Data Factory puede ser utilizado para preprocesar y transformar tus datos antes de cargarlos en Azure Machine Learning Studio. Esto puede ayudar a gestionar grandes conjuntos de datos de manera más eficiente.

    4. Actualización de Bibliotecas

    Has mencionado problemas con diferentes versiones de azureml-defaults. Asegúrate de que todas las bibliotecas relacionadas sean compatibles y estén actualizadas:

    pip install --upgrade azureml-core azureml-dataprep
    

    5. Manejo de Errores Específicos

    • OutOfMemoryException: Esto generalmente indica que el conjunto de datos es demasiado grande para caber en la memoria. Considera usar fragmentación o marcos de computación distribuida como Dask o PySpark.
    • Parquet Argument Error: Esto podría deberse a archivos corruptos o problemas con la biblioteca Parquet. Asegúrate de que tus archivos Parquet estén correctamente formateados y no estén corruptos.

    6. Mejores Prácticas para Cargar Datos

    Consulta la documentación de Azure Machine Learning para conocer las mejores prácticas sobre cómo cargar y manejar grandes conjuntos de datos.

    Código de Ejemplo para Cargar Datos de Manera Eficiente

    Aquí tienes un ejemplo de cómo podrías cargar tus datos usando Dask:

    import dask.dataframe as dd
    # Cargar archivos parquet usando Dask
    df = dd.read_parquet('ruta_a_los_archivos_parquet/*.parquet')
    # Convertir a dataframe de pandas si es necesario
    pandas_df = df.compute()
    

    Espero que estos consejos ayuden a resolver el problema. Si necesitas más asistencia, estoy a tu disposición.

    Saludos,

    Jonathan.

    ----------*

    Tu opinión es muy importante para nosotros! Si esta respuesta resolvió tu consulta, por favor haz clic en ''. Esto nos ayuda a mejorar continuamente la calidad y relevancia de nuestras soluciones.

    0 comentarios No hay comentarios

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.