Todos los productos
Search
Centro de documentos

MaxCompute:Preguntas frecuentes: Optimización de archivos pequeños y diagnóstico de trabajos

Última actualización: Sep 03, 2026

Este tema responde a las preguntas más comunes sobre la optimización de archivos pequeños y el diagnóstico de trabajos en MaxCompute.

Categoría

Pregunta

Optimización de archivos pequeños

¿En qué escenarios se generan archivos pequeños? ¿Cómo resuelvo este problema?

Diagnóstico de trabajos

¿Qué hago si una operación de inserción concurrente devuelve el error ODPS-0110999?

¿Qué hago si un trabajo devuelve el error ODPS-0130121?

¿Por qué aparece una tarea como suspendida en DataWorks Operation Center?

¿Por qué DataWorks Data Integration me pide constantemente que revise el campo Order?

¿Qué hago si odpscmd -f falla sin devolver un mensaje de error?

¿Por qué las tareas de sincronización de DataWorks se quedan en estado de espera?

¿Por qué un servidor de recursos de programación siempre aparece como detenido?

¿En qué escenarios se generan archivos pequeños? ¿Cómo resuelvo este problema?

Escenarios

MaxCompute utiliza Apsara Distributed File System (Pangu) para block storage. Los archivos con un tamaño inferior al tamaño de bloque predeterminado de 64 MB se consideran archivos pequeños.

Los archivos pequeños suelen generarse en los siguientes escenarios:

  • Fase Reduce: Se genera una gran cantidad de archivos pequeños durante la fase Reduce de un trabajo.

  • Carga de datos mediante Tunnel: Los archivos pequeños se acumulan cuando los datos se cargan en lotes reducidos a través de Tunnel.

  • Archivos temporales y caducados: La ejecución de trabajos genera archivos temporales, y los archivos caducados pueden permanecer en la papelera de reciclaje. Estos incluyen los siguientes tipos:

    Tipo

    Descripción

    TABLE_BACKUP

    Tablas conservadas en la papelera de reciclaje más allá de su periodo de retención

    FUXI_JOB_TMP

    Directorios temporales generados durante la ejecución del trabajo

    TMP_TABLE

    Tablas temporales generadas durante la ejecución del trabajo

    INSTANCE

    Registros conservados en tablas de metadatos durante la ejecución del trabajo

    LIFECYCLE

    Tablas o particiones que han alcanzado su límite de ciclo de vida

    INSTANCEPROFILE

    Datos de perfil generados tras el envío y la ejecución del trabajo

    VOLUME_TMP

    Datos sin metadatos que tienen un directorio asignado en Pangu

    TEMPRESOURCE

    Archivos de recursos temporales de un solo uso utilizados por UDFs

    FAILOVER

    Archivos temporales conservados durante failovers del sistema

Para comprobar la cantidad de archivos pequeños en una tabla, ejecute el siguiente comando:

desc extended <table_name>;

Impacto

Una gran cantidad de archivos pequeños puede causar los siguientes problemas:

  • Desperdicio de recursos: De forma predeterminada, cada archivo pequeño se asigna a una instancia map. Un número elevado de archivos pequeños provoca una creación excesiva de instancias y degrada el rendimiento general de ejecución.

  • Presión sobre el sistema de almacenamiento: Una gran cantidad de archivos pequeños incrementa la carga en Pangu y reduce la eficiencia del almacenamiento. En casos extremos, Pangu podría dejar de estar available.

Soluciones

Elija una solución según cómo se generaron los archivos pequeños:

Archivos pequeños provenientes de la fase Reduce

Ejecute una instrucción INSERT OVERWRITE sobre la tabla o partición de origen, o bien escriba los datos en una nueva tabla y luego elimine la tabla de origen.

Archivos pequeños provenientes de cargas de datos mediante Tunnel

  • Al usar el SDK de Tunnel, cargue los datos cuando la caché de archivos alcance los 64 MB.

  • Al utilizar el cliente de MaxCompute (odpscmd), evite cargar archivos pequeños con frecuencia. Cargue los datos en bloque cuando se haya acumulado un número suficiente de archivos.

  • Para tablas particionadas, configure reglas de ciclo de vida en las particiones para limpiar automáticamente los datos caducados.

  • Ejecute una instrucción INSERT OVERWRITE sobre la tabla o partición de origen.

  • Ejecute el siguiente comando para combinar archivos pequeños:

      ALTER TABLE <table_name> [PARTITION (<pt_spec>)] MERGE SMALLFILES;

¿Qué hago si una operación de inserción concurrente devuelve el error ODPS-0110999?

Problema

Al ejecutar operaciones de inserción concurrentes en una tabla, se devuelve el siguiente error:

ODPS-0110999: Critical! Internal error happened in commit operation and rollback failed, possible breach of atomicity - Rename directory failed during DDLTask.

Causa

MaxCompute no admite control de concurrencia. Cuando varios trabajos modifican la misma tabla simultáneamente, puede producirse un conflicto de concurrencia con baja probabilidad durante las operaciones en el módulo de metadatos (META). Este error también puede ocurrir cuando se ejecutan operaciones ALTER e INSERT en la misma tabla al mismo tiempo.

Solución

Convierta la tabla en una tabla particionada para que cada instrucción SQL inserte datos en una partición independiente. Esto permite realizar operaciones concurrentes sin conflictos.

¿Qué hago si un trabajo devuelve el error ODPS-0130121?

Problema

Cuando se ejecuta un trabajo, se devuelve el siguiente error:

FAILED:ODPS-0130121:Invalid argument type - line 1:7 'testfunc':in function class

Causa

Los tipos de datos de los argumentos de entrada pasados a una función integrada no son válidos.

Solución

Compruebe los tipos de datos de los argumentos de entrada y asegúrese de que cumplen con los requisitos de la función integrada. Para obtener más información sobre las funciones integradas y sus tipos de parámetros, consulte la documentación de referencia de SQL de MaxCompute.

¿Por qué aparece una tarea como suspendida en DataWorks Operation Center?

Verifique si la tarea se ha iniciado según la configuración del proyecto:

  • La tarea está iniciada: Compruebe si alguna tarea antecesora ha fallado. Una tarea antecesora con errores bloquea las tareas posteriores.

  • La tarea no está iniciada: Haga clic con el botón derecho en el nodo de trabajo y compruebe que se ejecuta correctamente. Si es necesario, cambie el nombre de la tarea y reconfigure sus propiedades de programación.

¿Por qué DataWorks Data Integration me pide constantemente que revise el campo Order?

Este mensaje indica que es posible que se haya eliminado el campo Order de la base de datos.

Para resolver este problema:

  1. Compruebe si el campo Order existe en la base de datos de origen.

  2. Borre la caché.

  3. Reconfigure o vuelva a crear la tarea de sincronización.

  4. Verifique el estado de la tarea.

¿Qué hago si odpscmd -f falla sin devolver un mensaje de error?

Problema

Al ejecutar el comando odpscmd -f para procesar un archivo SQL en crontab, la ejecución falla pero no se devuelve ningún mensaje de error. Sin embargo, al ejecutar el mismo comando directamente en una sesión de Shell, funciona correctamente.

Causa

En crontab, los flujos de salida y de error no se capturan de forma predeterminada, por lo que los mensajes de error se pierden.

Solución

Redirija los flujos de salida y de error a un archivo de registro al ejecutar el comando en crontab:

odpscmd -f xxx.sql >> /path/to/odpscmd.log 2>&1

Si surge algún problema, revise el archivo de registro para consultar los detalles del error.

¿Por qué las tareas de sincronización de DataWorks se quedan en estado de espera?

Si las tareas de sincronización permanecen en estado de espera mientras utiliza recursos de programación compartidos, optimize batch synchronization tasks para maximizar la velocidad de sincronización.

También puede agregar recursos de programación dedicados. Para obtener más información, consulte Crear y utilizar un resource group personalizado para Data Integration.

¿Por qué un servidor de recursos de programación siempre aparece como detenido?

Si un servidor agregado mediante la función de gestión de recursos de programación aparece como detenido (incluso después de reinicializarlo), compruebe lo siguiente:

  • Red de interconexión de productos en la nube: Verifique que el nombre de la máquina en la información de registro coincida con el nombre de host real del servidor. Ejecute el comando hostname en la instancia ECS para obtener el nombre de host verdadero. No se admiten nombres personalizados.

  • Virtual Private Cloud (VPC): Compruebe si se ha modificado el nombre de host de la ECS. Tenga en cuenta que el nombre de host de la ECS es diferente del nombre de la instancia. Si se modificó el nombre de host, ejecute cat /etc/hosts en la instancia ECS para verificar que la vinculación del nombre de host sea válida.