Tous les produits
Search
Centre de documentation

E-MapReduce:Commande MoveTo de JindoTable

Dernière mise à jour :Sep 21, 2026

La commande MoveTo migre les données des tables et des partitions vers un nouveau chemin de stockage.

Prérequis

  • Le kit de développement Java (JDK) 8 est installé.

  • Un cluster a été créé. Pour plus d'informations, consultez la rubrique Créer un cluster.

Contexte

La commande MoveTo copie les données sous-jacentes et met automatiquement à jour les métadonnées afin de migrer intégralement les données des tables et des partitions vers un nouveau chemin. Utilisez des conditions de filtrage pour copier plusieurs partitions simultanément. Des mécanismes de sécurité intégrés garantissent l'intégrité des données pendant la migration.

Limites

La commande MoveTo est prise en charge sur les clusters exécutant EMR V3.36.0 ou version ultérieure, ainsi que sur ceux exécutant EMR V5.2.0 ou version ultérieure.

Utiliser la commande MoveTo

Important

Un seul processus MoveTo peut s'exécuter à la fois sur un cluster. Si un processus MoveTo est déjà en cours d'exécution, un nouveau processus ne parvient pas à obtenir le verrou de configuration et se termine. Le système vous informe qu'un processus est en cours. Dans ce cas, arrêtez le processus en cours d'exécution et démarrez-en un nouveau, ou attendez la fin du processus actuel.

  1. Connectez-vous au cluster via Secure Shell (SSH). Pour plus d'informations, consultez la rubrique Se connecter à un cluster.

  2. Exécutez la commande suivante pour afficher l'aide.

    jindo table -help moveTo

    Les informations d'aide ressemblent à ce qui suit :

    <dbName.tableName>      The table to move.
    <destination path>      The destination base directory which is always at the
                              same level of a 'table location', where the moved
                              partitions or un-partitioned data would located in.
    <condition>/-fullTable  A filter condition to determine which partitions should
                              be moved, supporting common operators (like '>') and
                              built-in UDFs (like to_date) (UDFs not supported
                              yet...), while -fullTable means that all partitions (or
                              a whole un-partitioned table) should be moved. One but
                              only one option must be specified among -c
                              "<condition>" and -fullTable.
    <before days>           Optional, saying that table/partitions should be moved
                              only when they are created (not updated or modified)
                              more than some days before from now.
    <parallelism>           The maximum concurrency when copying partitions, 1 by
                              default.
            <OSS storage policy>: Storage policy for OSS destination, which can be Standard
      (by default), IA, Archive, or ColdArchive. Not applicable for destinations other
      than OSS. NOTE: if you are willing to use ColdArchive storage policy, please
      make sure that Cold Archive has been enabled for your OSS bucket.
    
    -o/-overWrite     Overwriting the final paths where the data would be moved.
                        For partitioned tables this overwrites partitions' locations
                        which are subdirectories of <destination path>; for
                        un-partitioned table this overwrites the <destination path>
                        itself.
    -r/-removeSource  Let the source data be removed when the corresponding
                        table/partition is successfully moved to the new destination.
                        Otherwise (by default), the source data would be left as it
                        was.
    -skipTrash        Applicable only when [-r/-removeSource] is enabled. If
                        present, source data would be immediately deleted from the
                        file system, bypassing the trash.
    -e/-explain       If present, the command would not really move data, but only
                        prints the table/partitions that would be moved for given
                        conditions.
    <log directory>   A directory to locate log files, '/tmp/<current user>/' by
                        default.

    La syntaxe de la commande MoveTo est la suivante :

    jindo table -moveTo \
      -t <dbName.tableName> \
      -d <destination path> \
      [-c "<condition>" | -fullTable] \
      [-b/-before <before days>] \
      [-p/-parallel <parallelism>] \
      [-s/-storagePolicy <OSS storage policy>] \
      [-o/-overWrite] \
      [-r/-removeSource] \
      [-skipTrash] \
      [-e/-explain] \
      [-l/-logDir <log directory>]
    Paramètre Description Obligatoire
    -t <dbName.tableName> Nom de la table à déplacer. Utilisez le format database_name.table_name.

    Le nom de la base de données et le nom de la table sont séparés par un point (.). La table peut être partitionnée ou non partitionnée.

    Oui
    -d <destination path> Chemin de destination. Que vous déplaciez des partitions ou une table entière non partitionnée, ce chemin correspond à l'emplacement au niveau de la table. Si vous déplacez une partition, le chemin complet de la partition correspond au chemin de destination suivi du nom de la partition, par exemple <destination path>/p1=v1/p2=v2/. Oui
    -c "<condition>" | -fullTable Spécifiez soit -c "<condition>", soit -fullTable.
    • Si vous spécifiez -fullTable, la table entière est déplacée. La table peut être partitionnée ou non partitionnée.
    • Si vous spécifiez -c "<condition>", une condition de filtrage est fournie pour sélectionner les partitions à déplacer. Les opérateurs courants, tels que le signe supérieur à (>), sont pris en charge.

      Par exemple, pour une colonne de clé de partition ds de type de données String, si vous souhaitez sélectionner les partitions dont le nom est supérieur à « d », utilisez -c " ds > 'd' ".

    Non
    -b/before <before days> Déplace uniquement les tables ou partitions créées il y a plus d'un nombre de jours spécifié. Non
    -p/-parallel <parallelism> Degré de parallélisme de l'opération de migration. Non
    -s/-storagePolicy <OSS storage policy> Politique de stockage pour les données copiées vers OSS. Les politiques suivantes sont disponibles :
    • Standard : (Stockage d'archives).
    • IA : Stockage à accès peu fréquent (IA).
    • Classe de stockage : Standard
    • ColdArchive : Stockage d'archives froides.
      Remarque Assurez-vous que cette fonctionnalité est activée pour votre compartiment OSS avant d'utiliser cette politique.
    Non
    -o/-overWrite Indique s'il faut écraser le chemin de destination. Pour une table partitionnée, cette option efface uniquement les chemins des partitions à déplacer, et non le chemin entier de la table. Non
    -r/-removeSource Indique s'il faut supprimer les données source une fois la migration terminée et les métadonnées mises à jour. Pour une table partitionnée, cette option supprime uniquement les chemins source des partitions qui ont été déplacées avec succès. Non
    -skipTrash Indique s'il faut contourner la corbeille lors de la suppression du chemin source.
    Remarque Ce paramètre s'applique uniquement lorsque -r/-removeSource est spécifié.
    Non
    -e/-explain Si cette option est spécifiée, la commande s'exécute en mode explicatif. Elle répertorie les partitions qui seraient déplacées, mais ne déplace aucune donnée. Non
    -l/-logDir <log directory> Spécifie le répertoire des fichiers journaux. Non

Configurer le répertoire de verrouillage

L'outil MoveTo utilise un verrou de processus, qui nécessite un chemin Hadoop Distributed File System (HDFS) pour stocker le fichier LOCK. Par défaut, le chemin est

hdfs:///tmp/jindotable-lock/

.

Important

Le chemin du fichier LOCK doit être un chemin HDFS. Si vous ne disposez pas des autorisations requises pour le chemin par défaut, suivez les étapes ci-dessous pour configurer un chemin personnalisé.

  1. Accédez à la page du service HDFS.

    1. Connectez-vous à la console Alibaba Cloud E-MapReduce.

    2. Dans la barre de menu supérieure, sélectionnez la région et le groupe de ressources où se trouve votre cluster.

    3. Cliquez sur l'onglet Clusters.

    4. Sur la page Clusters, cliquez sur Details dans la ligne du cluster souhaité.

    5. Dans le volet de navigation de gauche, choisissez Services > HDFS.

  2. Modifiez la configuration.

    1. Sur la page du service HDFS, cliquez sur l'onglet Configure. Cliquez ensuite sur l'onglet hdfs-site ou core-site.

    2. Dans le coin supérieur droit, cliquez sur Custom Configuration.

    3. Dans la boîte de dialogue Add Configuration Item, ajoutez l'élément de configuration jindotable.moveto.tablelock.base.dir et définissez sa valeur sur un chemin HDFS existant.

      Important

      Avant de configurer un répertoire de verrouillage personnalisé, assurez-vous qu'aucun processus MoveTo n'est en cours d'exécution sur aucun nœud du cluster. Sinon, l'opération MoveTo risque d'échouer ou de provoquer une corruption des données.

  3. Enregistrez la configuration.

    1. Dans le coin supérieur droit, cliquez sur Save.

    2. Dans la boîte de dialogue Confirm, saisissez une raison pour la modification et cliquez sur OK.