Tous les produits
Search
Centre de documentation

MaxCompute:Utiliser un nœud PyODPS pour éviter de télécharger des données vers un répertoire local

Dernière mise à jour :Aug 20, 2026

Cette rubrique explique comment utiliser un nœud PyODPS pour éviter de télécharger des données vers un répertoire local en vue de leur traitement, ou pour traiter les données en ligne.

Contexte

PyODPS propose plusieurs méthodes pour télécharger des données vers un répertoire local. Vous pouvez télécharger les données localement pour les traiter, puis les charger dans MaxCompute. Toutefois, le traitement local des données s'avère inefficace, car il empêche d'exploiter la capacité de traitement massivement parallèle de MaxCompute. Si le volume de données dépasse 10 Mo, nous vous recommandons de ne pas les télécharger vers un répertoire local pour les traiter. Voici les méthodes disponibles pour télécharger des données vers un répertoire local :

  • Utilisez la méthode head, tail ou to_pandas. Dans la plupart des cas, privilégiez la méthode head ou tail pour récupérer de petits volumes de données. Pour obtenir de grands volumes de données, utilisez la méthode persist afin de stocker les données dans une table MaxCompute. Pour plus d'informations, consultez la section Exécuter et obtenir des résultats.

  • Utilisez la méthode open_reader. Exécutez open_reader sur une table ou une instance SQL pour récupérer les données. Si vous devez traiter de grands volumes de données, nous vous recommandons d'utiliser PyODPS DataFrame ou MaxCompute SQL. Un objet PyODPS DataFrame est créé à partir d'une table MaxCompute. Cette méthode offre une efficacité supérieure à celle du traitement local des données.

Exemple de code

Convertissez une chaîne JSON en plusieurs lignes. Chaque ligne se compose d'une clé et de sa valeur.

  • Pour les tests locaux, utilisez la méthode head afin de récupérer de petits volumes de données

    In [12]: df.head(2)
                   json
    0  {"a": 1, "b": 2}
    1  {"c": 4, "b": 3}
    
    In [14]: from odps.df import output
    
    In [16]: @output(['k', 'v'], ['string', 'int'])
        ...: def h(row):
        ...:     import json
        ...:     for k, v in json.loads(row.json).items():
        ...:         yield k, v
        ...:   
    
    In [21]: df.apply(h, axis=1).head(4)
    
       k  v
    0  a  1
    1  b  2
    2  c  4
    3  b  3
  • Pour la production en ligne, utilisez la méthode persist afin de stocker de grands volumes de données dans une table MaxCompute

    In [14]: from odps.df import output
    
    In [16]: @output(['k', 'v'], ['string', 'int'])
        ...: def h(row):
        ...:     import json
        ...:     for k, v in json.loads(row.json).items():
        ...:         yield k, v
        ...:   
    
    In [21]: df.apply(h, axis=1).persist('my_table')