Tous les produits
Search
Centre de documentation

MaxCompute:FAQ: Small file optimization and job diagnostics

Dernière mise à jour :Aug 10, 2026

Cette rubrique répond aux questions courantes sur l'optimisation des petits fichiers et les diagnostics de jobs dans MaxCompute.

Catégorie Question
Optimisation des petits fichiers Dans quels scénarios des petits fichiers sont-ils générés ? Comment résoudre ce problème ?
Diagnostics de jobs Que faire si une opération d'insertion concurrente renvoie l'erreur ODPS-0110999 ?
Que faire si un job renvoie l'erreur ODPS-0130121 ?
Pourquoi une tâche apparaît-elle comme suspendue dans le centre d'opérations DataWorks ?
Pourquoi DataWorks Data Integration m'invite-t-il continuellement à vérifier le champ Order ?
Que faire si la commande odpscmd -f échoue sans renvoyer de message d'erreur ?
Pourquoi les tâches de synchronisation DataWorks restent-elles bloquées à l'état d'attente ?
Pourquoi un serveur de ressources de planification affiche-t-il toujours l'état arrêté ?

Dans quels scénarios des petits fichiers sont-ils générés ? Comment résoudre ce problème ?

Scénarios

MaxCompute utilise le système de fichiers distribué Apsara (Pangu) pour le stockage par blocs. Les fichiers inférieurs à la taille de bloc par défaut de 64 Mo sont considérés comme des petits fichiers.

Les petits fichiers sont généralement générés dans les scénarios suivants :

  • Étape Reduce : Un grand nombre de petits fichiers sont produits lors de l'étape Reduce d'un job.

  • Téléchargement de données via Tunnel : Des petits fichiers s'accumulent lorsque les données sont téléchargées par petits lots via Tunnel.

  • Fichiers temporaires et expirés : L'exécution des jobs génère des fichiers temporaires et des fichiers expirés peuvent rester dans la corbeille. Ceux-ci incluent les types suivants :

    Type Description
    TABLE_BACKUP Tables conservées dans la corbeille au-delà de leur période de rétention
    FUXI_JOB_TMP Répertoires temporaires générés lors de l'exécution des jobs
    TMP_TABLE Tables temporaires générées lors de l'exécution des jobs
    INSTANCE Journaux conservés dans les tables de métadonnées lors de l'exécution des jobs
    LIFECYCLE Tables ou partitions ayant atteint leur limite de cycle de vie
    INSTANCEPROFILE Données de profil générées après la soumission et l'exécution des jobs
    VOLUME_TMP Données sans métadonnées disposant d'un répertoire mappé sur Pangu
    TEMPRESOURCE Fichiers de ressources temporaires à usage unique utilisés par les UDF
    FAILOVER Fichiers temporaires conservés lors des basculements du système

Pour vérifier le nombre de petits fichiers dans une table, exécutez la commande suivante :

desc extended <table_name>;

Impact

Un grand nombre de petits fichiers peut entraîner les problèmes suivants :

  • Gaspillage de ressources : Par défaut, chaque petit fichier est mappé à une instance map. Un grand nombre de petits fichiers conduit à une création excessive d'instances et dégrade les performances globales d'exécution.

  • Pression sur le système de stockage : Un grand nombre de petits fichiers augmente la charge sur Pangu et réduit l'efficacité du stockage. Dans les cas extrêmes, Pangu peut devenir indisponible.

Solutions

Choisissez une solution en fonction de la manière dont les petits fichiers ont été générés :

Petits fichiers provenant de l'étape Reduce

Exécutez une instruction INSERT OVERWRITE sur la table ou la partition source, ou écrivez les données dans une nouvelle table puis supprimez la table source.

Petits fichiers provenant du téléchargement de données via Tunnel

  • Lors de l'utilisation du SDK Tunnel, téléchargez les données lorsque le cache de fichiers atteint 64 Mo.

  • Lors de l'utilisation du client MaxCompute (odpscmd), évitez de télécharger fréquemment de petits fichiers. Téléchargez les données en lot lorsqu'un nombre suffisant de fichiers a été accumulé.

  • Pour les tables partitionnées, configurez des règles de cycle de vie pour les partitions afin de supprimer automatiquement les données expirées.

  • Exécutez une instruction INSERT OVERWRITE sur la table ou la partition source.

  • Exécutez la commande suivante pour fusionner les petits fichiers :

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

Que faire si une opération d'insertion concurrente renvoie l'erreur ODPS-0110999 ?

Problème

Lorsque vous exécutez des opérations d'insertion concurrentes sur une table, l'erreur suivante est renvoyée :

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

Cause

MaxCompute ne prend pas en charge le contrôle de concurrence. Lorsque plusieurs jobs modifient simultanément la même table, un conflit de concurrence peut survenir avec une faible probabilité lors des opérations sur le module de métadonnées (META). Cette erreur peut également se produire lorsque des opérations ALTER et INSERT s'exécutent sur la même table en même temps.

Solution

Convertissez la table en table partitionnée afin que chaque instruction SQL insère les données dans une partition distincte. Cela permet des opérations concurrentes sans conflits.

Que faire si un job renvoie l'erreur ODPS-0130121 ?

Problème

Lorsqu'un job s'exécute, l'erreur suivante est renvoyée :

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

Cause

Les types de données des paramètres d'entrée transmis à une fonction intégrée ne sont pas valides.

Solution

Vérifiez les types de données des paramètres d'entrée et assurez-vous qu'ils correspondent aux exigences de la fonction intégrée. Pour plus d'informations sur les fonctions intégrées et leurs types de paramètres, consultez la documentation de référence MaxCompute SQL.

Pourquoi une tâche apparaît-elle comme suspendue dans le centre d'opérations DataWorks ?

Vérifiez si la tâche est démarrée en fonction de la configuration du projet :

  • La tâche est démarrée : Vérifiez si une tâche ancêtre a échoué. Une tâche ancêtre ayant échoué bloque les tâches en aval.

  • La tâche n'est pas démarrée : Cliquez avec le bouton droit sur le nœud worker et vérifiez que le nœud fonctionne correctement. Si nécessaire, renommez la tâche et reconfigurez ses propriétés de planification.

Pourquoi DataWorks Data Integration m'invite-t-il continuellement à vérifier le champ Order ?

Ce message indique que le champ Order de la base de données a peut-être été supprimé.

Pour résoudre ce problème :

  1. Vérifiez si le champ Order existe dans la base de données source.

  2. Videz le cache.

  3. Reconfigurez ou recréez la tâche de synchronisation.

  4. Vérifiez l'état de la tâche.

Que faire si la commande odpscmd -f échoue sans renvoyer de message d'erreur ?

Problème

Lorsque vous exécutez la commande odpscmd -f pour exécuter un fichier SQL dans crontab, l'exécution échoue mais aucun message d'erreur n'est renvoyé. Cependant, l'exécution de la même commande directement dans une session Shell fonctionne correctement.

Cause

Dans crontab, les flux de sortie et d'erreur ne sont pas capturés par défaut, donc les messages d'erreur sont perdus.

Solution

Redirigez les flux de sortie et d'erreur vers un fichier journal lors de l'exécution de la commande dans crontab :

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

Lorsqu'un problème survient, consultez le fichier journal pour obtenir les détails de l'erreur.

Pourquoi les tâches de synchronisation DataWorks restent-elles bloquées à l'état d'attente ?

Si les tâches de synchronisation sont à l'état d'attente lors de l'utilisation de ressources de planification partagées, optimisez les tâches de synchronisation par lots pour maximiser la vitesse de synchronisation.

Vous pouvez également ajouter des ressources de planification dédiées. Pour plus d'informations, consultez Créer et utiliser un groupe de ressources personnalisé pour Data Integration.

Pourquoi un serveur de ressources de planification affiche-t-il toujours l'état arrêté ?

Si un serveur ajouté via la fonctionnalité de gestion des ressources de planification affiche l'état arrêté (même après réinitialisation), vérifiez les points suivants :

  • Réseau d'interconnexion des produits cloud : Vérifiez que le nom de la machine dans les informations d'enregistrement correspond au nom d'hôte réel du serveur. Exécutez la commande hostname sur l'instance ECS pour obtenir le nom d'hôte réel. Les noms personnalisés ne sont pas pris en charge.

  • Virtual Private Cloud (VPC) : Vérifiez si le nom d'hôte ECS a été modifié. Notez que le nom d'hôte ECS est différent du nom de l'instance. Si le nom d'hôte a été modifié, exécutez cat /etc/hosts sur l'instance ECS pour vérifier que la liaison du nom d'hôte est valide.