Tous les produits
Search
Centre de documentation

DataWorks:Développement avancé de notebooks

Dernière mise à jour :Aug 12, 2026

Améliorez votre efficacité de développement grâce à la réutilisation du code, au montage de jeux de données et à la gestion des paramètres. Connectez-vous aux moteurs de calcul tels que MaxCompute Spark, EMR Serverless Spark et AnalyticDB for Spark.

Remarque

Nous vous recommandons de consulter la rubrique Développement de base de notebooks.

Différences entre les environnements

DataWorks Notebook est un outil d'analyse et de développement planifiable qui s'exécute dans deux environnements distincts :

  • Environnement de développement : lorsque vous exécutez une cellule sur la page d'édition de DataWorks Notebook dans DataStudio, le code s'exécute dans une instance d'environnement de développement personnel, ce qui permet une validation et un débogage rapides.

  • Environnement de production : après avoir validé et publié un nœud DataWorks Notebook, la planification périodique ou le remplissage de données déclenche son exécution dans une instance de tâche isolée et éphémère, garantissant des exécutions de production stables et fiables.

Gardez ces différences à l'esprit lors de l'écriture de code devant fonctionner dans les deux environnements.

Différences fonctionnelles

Fonctionnalité

Environnement de développement (exécution d'une cellule)

Environnement de production (planification périodique, remplissage de données)

Référencement des ressources du projet (.py)

  • Référence initiale : la ressource est automatiquement téléchargée et prend effet.

  • Après une mise à jour : cliquez sur le bouton Restart dans la barre d'outils pour recharger le module .py mis à jour.

    Important

    Dans les paramètres de DataStudio, modifiez le paramètre Dataworks › Notebook › Resource Reference: Download Strategy en le définissant sur autoOverwrite.

Prend effet automatiquement.

Lecture et écriture de jeux de données (OSS/NAS)

Montez le jeu de données dans l'environnement de développement personnel.

Montez le jeu de données dans les configurations de planification.

Référencement des paramètres de l'espace de travail (${...})

Les paramètres sont automatiquement remplacés par leurs valeurs avant l'exécution du code.

Les paramètres sont automatiquement remplacés par leurs valeurs avant l'exécution de la tâche.

Gestion des sessions Spark

La session Spark dispose d'un délai d'inactivité de deux heures et est automatiquement libérée.

DataWorks crée et détruit automatiquement une session de courte durée pour chaque instance de tâche.

Réutiliser le code et les données en production

Référencer des ressources de projet (fichiers .py)

Encapsulez les fonctions ou classes courantes dans des fichiers .py et référencez-les en tant que ressources MaxCompute à l'aide de ##@resource_reference{"custom_name.py"}.

  1. Créer et publier une ressource Python

    1. Dans le volet de navigation de gauche de DataStudio DataWorks, cliquez sur l'icône image pour accéder à la Resource Management.

    2. Dans l'arborescence Resource Management, cliquez avec le bouton droit sur le répertoire cible ou cliquez sur + dans le coin supérieur droit. Sélectionnez New Resource > MaxCompute Python, et nommez la ressource my_utils.py.

    3. Dans la section Document Content, cliquez sur Online Editing, collez le code de votre fonction utilitaire déboguée dans l'éditeur, puis cliquez sur Save.

      # my_utils.py
      def greet(name):
          return f"Hello, {name} from resource file!"
    4. Dans la barre d'outils, cliquez sur Save puis sur Publish. Cela rend la ressource visible pour les tâches de développement et de production.

  2. Référencer la ressource dans un notebook

    À la première ligne d'une cellule Python de votre notebook, utilisez la syntaxe ##@resource_reference pour référencer la ressource publiée.

    ##@resource_reference{"my_utils.py"}
    # If the resource is in a directory, such as my_folder/my_utils.py, you still use ##@resource_reference{"my_utils.py"} without the directory name.
    from my_utils import greet
    message = greet('DataWorks')
    print(message)
  3. Déboguer et exécuter dans l'environnement de développement

    Exécutez la cellule Python. Le résultat suivant s'affiche :

    Hello, DataWorks from resource file!
    Important

    Lorsque vous déboguez et exécutez dans l'environnement de développement, le système détecte la déclaration ##@resource_reference et télécharge le fichier cible depuis Resource Management vers workspace/_dataworks/resource_references dans votre répertoire personnel.

    Si une erreur ModuleNotFoundError survient, cliquez sur le bouton Restart dans la barre d'outils de l'éditeur pour recharger la ressource, puis réessayez.

  4. Publier dans l'environnement de production et vérifier

    Après avoir Save et Publish ce nœud Notebook, accédez à Operation and Maintenance Center > Auto Triggered Task et cliquez sur Test pour l'exécuter. Une fois la tâche exécutée avec succès, vous verrez la sortie Hello, DataWorks from resource file! dans les journaux.

    Important

    Si une erreur There is no file with id ... apparaît, assurez-vous d'avoir d'abord publié la ressource Python dans l'environnement de production.

Pour plus d'opérations, consultez Ressources et fonctions MaxCompute .

Lire et écrire des jeux de données (OSS/NAS)

Lisez et écrivez de gros fichiers stockés sur OSS ou NAS lors de l'exécution des tâches du notebook.

Déboguer dans l'environnement de développement

  1. Monter un jeu de données : accédez à la page de détails de votre environnement de développement personnel. Dans Storage Settings > Datasets, configurez le jeu de données.

  2. Accès dans le code : le jeu de données est monté au chemin de montage de votre environnement de développement personnel. Vous pouvez lire ou écrire directement à ce chemin dans votre code.

    # Assume you have mounted a dataset to /mnt/data/dataset in your personal development environment.
    import pandas as pd
    # Use the mount path directly.
    file_path = '/mnt/data/dataset/testfile.csv'
    df = pd.read_csv(file_path)
    # Use PyODPS to write the data to MaxCompute.
    o = %odps
    o.write_table('mc_test_table', df, overwrite=True)
    print(f"Successfully wrote data to the MaxCompute table mc_test_table")

Déployer en production

  1. Monter le jeu de données : dans le volet de navigation de droite de l'éditeur de nœud de notebook, accédez à Scheduling Settings > Scheduling Policy et ajoutez le même jeu de données.

  2. Accès dans le code : après avoir validé et publié le notebook, le jeu de données sera monté au chemin de montage dans l'environnement de production. Vous pouvez lire ou écrire directement à ce chemin dans votre code.

    # Assume the dataset is mounted to /mnt/data/dataset in the production environment.
    import pandas as pd
    # Use the mount path directly.
    file_path = '/mnt/data/dataset/testfile.csv'
    df = pd.read_csv(file_path)
    # Use PyODPS to write the data to MaxCompute.
    o = %odps
    o.write_table('mc_test_table', df, overwrite=True)
    print(f"Successfully wrote data to the MaxCompute table mc_test_table")
Pour plus d'opérations, consultez Utiliser des jeux de données dans un environnement de développement personnel .

Référencer des paramètres d'espace de travail

Important

Cette fonctionnalité est disponible uniquement dans DataWorks Professional Edition et versions ultérieures.

Outre les paramètres de planification, DataWorks fournit des Workspace Parameters pour réutiliser les configurations globales et isoler les environnements entre les tâches et les nœuds. Référencez-les dans les cellules SQL et Python en utilisant ${workspace.param}, où param est le nom du paramètre.

1. Créer des Workspace Parameters : dans DataWorks, accédez à Operation and Maintenance Center > Scheduling Settings > Workspace Parameters pour créer les paramètres.

2. Référencer des Workspace Parameters :

  • Référencez un Workspace Parameter dans une cellule SQL.

    SELECT '${workspace.param}';

    Lorsque la requête s'exécute avec succès, elle affiche la valeur résolue du paramètre.

  • Référencez un Workspace Parameter dans une cellule Python.

    print('${workspace.param}')

    Lorsque le code s'exécute avec succès, il affiche la valeur résolue du paramètre.

Pour plus de détails, consultez Utiliser les paramètres d'espace de travail .

Interagir avec les moteurs de calcul via des commandes magiques

Les commandes magiques (préfixe % ou %%) connectent une cellule Python aux ressources de calcul sans coder en dur les identifiants ou les détails de connexion.

Se connecter à MaxCompute

Remarque

Avant de vous connecter à une ressource de calcul MaxCompute, assurez-vous d'avoir lié une ressource de calcul MaxCompute.

  • %odps : Obtenir un objet d'entrée PyODPS

    Aucune AccessKey codée en dur n'est requise.

    1. Utilisez une commande magique pour créer une connexion MaxCompute. Saisissez %odps. Un sélecteur de ressources de calcul MaxCompute apparaît dans le coin inférieur droit (et sélectionne automatiquement une ressource de calcul). Vous pouvez cliquer sur le nom du projet MaxCompute dans le coin inférieur droit pour changer de projets MaxCompute.

      o=%odps 
    2. Utilisez la ressource de calcul MaxCompute retournée pour exécuter un script PyODPS.

      Par exemple, pour obtenir toutes les tables du projet actuel :

      with o.execute_sql('show tables').open_reader() as reader:
          print(reader.raw)
  • %maxframe : Établir une connexion MaxFrame

    Crée une session MaxFrame pour le traitement distribué de données de type pandas sur MaxCompute.

    # Connect to and access the MaxCompute MaxFrame session.
    mf_session = %maxframe
    df = mf_session.read_odps_table('your_mc_table')
    print(df.head())
    # After development and debugging, destroy the session to release resources.
    mf_session.destroy()

Se connecter aux ressources de calcul Spark

DataWorks Notebook prend en charge plusieurs moteurs Spark, chacun ayant des méthodes de connexion, des contextes d'exécution et des cycles de vie des ressources différents.

Important

Un seul nœud de notebook peut se connecter à un seul type de ressource de calcul à l'aide d'une commande magique.

Comparaison des moteurs

Fonctionnalité

MaxCompute Spark

EMR Serverless Spark

AnalyticDB for Spark

Commande de connexion

%maxcompute_spark

%emr_serverless_spark

%adb_spark add

Remarque

Après l'exécution de la commande, le contexte d'exécution de l'ensemble du noyau du notebook bascule vers l'environnement PySpark distant. Vous pouvez écrire du code PySpark directement dans les cellules suivantes.

Prérequis

Lier une ressource de calcul MaxCompute.

Lier une ressource de calcul EMR et créer une Livy Gateway.

Lier une ressource de calcul AnalyticDB for Spark.

Mode environnement de développement

Crée ou réutilise automatiquement une session Livy.

Se connecte à une Livy Gateway existante pour créer une session.

Crée ou réutilise automatiquement un Spark Connect Server.

Mode environnement de production

Mode Livy : soumet les jobs Spark via le service Livy.

Mode batch spark-submit : traitement par lots pur qui ne conserve pas l'état de la session.

Mode Spark Connect Server : interagit via le service Spark Connect.

Libération des ressources en production

La session est automatiquement libérée après la fin de l'instance de tâche.

Les ressources sont automatiquement nettoyées après la fin de l'instance de tâche.

Les ressources sont automatiquement libérées après la fin de l'instance de tâche.

Cas d'utilisation

Traitement par lots et tâches ETL étroitement intégrés à l'écosystème MaxCompute.

Tâches d'analyse complexes nécessitant des configurations flexibles et une interaction avec l'écosystème big data open source, tel que Hudi et Iceberg.

Requêtes interactives et analyses haute performance sur les tables C-Store d'AnalyticDB for MySQL.

MaxCompute Spark

Remarque

Avant de vous connecter à une ressource de calcul MaxCompute, assurez-vous d'avoir lié une ressource de calcul MaxCompute.

Connectez-vous au moteur Spark intégré de votre projet MaxCompute via Livy.

  1. Établir une connexion : exécutez la commande suivante dans une cellule Python. Le système crée ou réutilise automatiquement une session Spark.

    # Create a Spark Session.
    %maxcompute_spark
  2. Exécuter du code PySpark : une fois la connexion établie, utilisez la commande magique de cellule %%spark pour exécuter du code PySpark dans une nouvelle cellule Python.

    # When you use MaxCompute Spark, the Python cell must start with %%spark.
    %%spark
    df = spark.sql("SELECT * FROM your_mc_table LIMIT 10")
    df.show()
  3. Libérer manuellement la connexion : après le développement et le débogage, vous pouvez arrêter ou supprimer manuellement la session. Lors de l'exécution dans un environnement de production, le système arrête et supprime automatiquement la session Livy pour l'instance de tâche actuelle.

    # Clean up the Spark session and stop the Livy session.
    %maxcompute_spark stop
    # Clean up the Spark session, then stop and delete the Livy configuration.
    %maxcompute_spark delete

EMR Serverless Spark

Remarque

Avant de vous connecter à une ressource de calcul, liez une ressource de calcul EMR Serverless Spark dans l'espace de travail et créez une Livy Gateway.

Connectez-vous à EMR Serverless Spark via une Livy Gateway existante.

  1. Établir une connexion : avant d'exécuter la commande, vous devez sélectionner la ressource de calcul EMR et la Livy Gateway dans le coin inférieur droit de la cellule.

    # Basic connection
    %emr_serverless_spark
    # Or, to pass custom Spark parameters at connection time, use two percent signs (%%).
    %%emr_serverless_spark
    {
      "spark_conf": {
        "spark.emr.serverless.environmentId": "<EMR_Serverless_Spark_runtime_environment_ID>",
        "spark.emr.serverless.network.service.name": "<EMR_Serverless_Spark_network_connection_ID>",
        "spark.driver.cores": "1",
        "spark.driver.memory": "8g",
        "spark.executor.cores": "1",
        "spark.executor.memory": "2g",
        "spark.driver.maxResultSize": "32g"
      }
    }
    Remarque

    Relation entre les paramètres personnalisés et les configurations globales

    • Comportement par défaut : les paramètres personnalisés définis ici s'appliquent uniquement à la session actuelle. Si vous ne fournissez pas de paramètres personnalisés, le système utilise les paramètres globaux configurés dans l'Admin Center.

    • Utilisation recommandée : pour les configurations devant être réutilisées dans plusieurs tâches ou par plusieurs utilisateurs, nous recommandons de les configurer globalement dans Admin Center > Serverless Spark > SPARK parameters afin de garantir la cohérence et de simplifier la gestion.

    • Règle de priorité : lorsqu'un même paramètre est défini à la fois dans les paramètres personnalisés et dans la configuration globale, l'option Configuration Priority Global dans l'Admin Center détermine quel paramétrage prend effet.

      • Si sélectionnée : la configuration globale remplace les paramètres personnalisés pour cette session.

      • Si non sélectionnée : les paramètres personnalisés pour cette session remplacent la configuration globale.

  2. (Facultatif) Se reconnecter : si un administrateur supprime accidentellement le jeton de la page Livy Gateway, vous pouvez exécuter la commande suivante pour le recréer.

    # Reconnect and refresh the Livy token for the current personal development environment.
    %emr_serverless_spark refresh_token
  3. Exécuter du code PySpark ou SQL : après une connexion réussie, le noyau bascule. Vous pouvez écrire du code PySpark directement dans une cellule Python ou écrire du SQL dans une cellule EMR Spark SQL.

    1. Soumettre et exécuter du code SQL sur la ressource de calcul dans une cellule EMR Spark SQL

      Après avoir établi une connexion à l'aide de %emr_serverless_spark, vous pouvez écrire directement des instructions SQL dans une cellule EMR Spark SQL sans sélectionner de ressource de calcul dans la cellule.

      La cellule EMR Spark SQL réutilise la connexion de %emr_serverless_spark et soumet le code à la ressource de calcul cible pour exécution.

      INSERT INTO employees VALUES
          (6, 'Fiona', 'Engineering', 98000.0),
          (7, 'George', 'Sales', 77000.0),
          (8, 'Hannah', 'Marketing', 72000.0),
          (9, 'Ian', 'Engineering', 105000.0),
          (10, 'Julia', 'HR', 68000.0);
    2. Soumettre et exécuter du code PySpark sur la ressource de calcul à l'aide de Python

      Après avoir établi une connexion à l'aide de %emr_serverless_spark, vous pouvez soumettre et exécuter du code PySpark dans une nouvelle cellule Python. Vous n'avez pas besoin d'ajouter le préfixe %%spark dans la cellule.

      df = spark.sql("SELECT * FROM employees;")
      df.show()
      +---+-------+-----------+--------+
      | id|   name| department|  salary|
      +---+-------+-----------+--------+
      |  1|  Alice|Engineering| 95000.0|
      |  2|    Bob|  Marketing| 75000.0|
      |  3|Charlie|Engineering|110000.0|
      |  4|  Diana|         HR| 70000.0|
      |  5|   Evan|      Sales| 80000.0|
      |  6|  Fiona|Engineering| 98000.0|
      |  7| George|      Sales| 77000.0|
      |  8| Hannah|  Marketing| 72000.0|
      |  9|    Ian|Engineering|105000.0|
      | 10|  Julia|         HR| 68000.0|
      +---+-------+-----------+--------+
  4. Libérer manuellement la connexion

    Important

    Si plusieurs utilisateurs partagent une Livy Gateway, la commande d'arrêt ou de suppression affecte tous les utilisateurs utilisant cette passerelle. Utilisez ces commandes avec prudence.

    # Clean up the Spark session and stop the Livy session.
    %emr_serverless_spark stop
    # Clean up the Spark session, then stop and delete the Livy configuration.
    %emr_serverless_spark delete

AnalyticDB for Spark

Remarque

Avant de vous connecter à la ressource de calcul, liez une ressource de calcul AnalyticDB for Spark dans l'espace de travail.

Connectez-vous à un moteur AnalyticDB for Spark en créant un Spark Connect Server.

  1. Établir une connexion : pour garantir la connectivité réseau, vous devez configurer correctement l'ID vSwitch et l'ID du groupe de sécurité dans les paramètres de connexion. Avant d'exécuter la commande, sélectionnez la ressource de calcul ADB Spark dans le coin inférieur droit de la cellule.

    # You must configure the vSwitch ID and security group ID to establish a network connection.
    %adb_spark add \
     --spark-conf spark.adb.version=3.5 \
     --spark-conf spark.adb.eni.enabled=true \
     --spark-conf spark.adb.eni.vswitchId=<vSwitch_ID_of_ADB> \
     --spark-conf spark.adb.eni.securityGroupId=<security_group_id_of_your_personal_development_environment>

    Comment trouver l'ID vSwitch et l'ID du groupe de sécurité

    • ID vSwitch (vswitchId) : accédez à la console Alibaba Cloud AnalyticDB for MySQL. Sur la page de détails de l'instance, trouvez l'vSwitch ID dans la section Network Information.

    • ID du groupe de sécurité (securityGroupId) : accédez à la page de détails de votre environnement de développement personnel. Dans la section Network Settings, trouvez l'ID de votre Security Group sélectionné, qui commence par sg-.

      Important

      Pour garantir la connectivité réseau, nous vous recommandons de sélectionner le même VPC et vSwitch que votre instance AnalyticDB for Spark lors de la création d'un environnement de développement personnel.

  2. Exécuter du code PySpark : après une connexion réussie, exécutez du code PySpark dans une nouvelle cellule Python.

    # You can run operations only on C-Store tables.
    df = spark.sql("SELECT * FROM my_adb_cstore_table LIMIT 10")
    df.show()
    Remarque : le moteur AnalyticDB for Spark ne peut actuellement traiter que les tables C-Store possédant l'attribut 'storagePolicy'='COLD' .
  3. Libérer manuellement la connexion : après le débogage, nettoyez manuellement la session de connexion pour économiser des ressources. En production, les ressources sont automatiquement nettoyées.

    %adb_spark cleanup

Se connecter à une ressource de calcul Lindorm Ray

Le groupe de ressources Ray du moteur de calcul Lindorm offre une puissance de calcul distribuée pour les charges de travail IA de bout en bout. Utilisez-le pour le développement interactif de notebooks, puis publiez-le en tant que tâche de production planifiée.

Avant de commencer, effectuez les étapes suivantes.

  • Lors de l'achat d'une instance Lindorm, sélectionnez Yes pour Enable Compute Engine.

  • Ajoutez votre cluster Lindorm en tant que ressource de calcul DataWorks. Pour plus d'informations, consultez Lier une ressource de calcul Lindorm.

  • Activez un groupe de ressources Ray pour votre cluster dans la console Lindorm. Lors de la création du groupe de ressources, spécifiez l'image correcte dans Advanced Settings pour garantir un environnement cohérent.

    Comment configurer l'image du groupe de ressources Ray ?

    Lorsque vous créez un groupe de ressources Ray dans la console Lindorm, trouvez Advanced Settings et saisissez le contenu JSON suivant. Remplacez region dans l'adresse de l'image par la région où se trouve votre cluster Lindorm. Par exemple, remplacez beijing par shanghai.

    {
      "IMAGE": "spark-repo-beijing-registry-vpc.cn-beijing.cr.aliyuncs.com/lindorm-compute/ray:2.39.0-0.7.0-py311-cpu"
    }
  • Votre environnement de développement personnel et votre groupe de ressources serverless doivent se trouver dans le même VPC que votre cluster Lindorm pour garantir la connectivité réseau.

  1. Établir une connexion : exécutez la commande magique %lindorm_ray dans une cellule Python. Après l'exécution de la commande, un sélecteur de ressources de calcul apparaît dans le coin inférieur droit de la cellule. Sélectionnez votre ressource de calcul Lindorm et le groupe de ressources Ray que vous avez créé.

    # Connect to the specified Lindorm Ray resource group.
    %lindorm_ray
    Important
    • Une fois connecté à une ressource de calcul Lindorm Ray, vous ne pouvez plus exécuter de cellules SQL dans le même notebook. Le moteur Lindorm Ray se concentre sur l'exécution de code Python et Ray.

    • Si vous exécutez la même cellule de code plusieurs fois, le système termine automatiquement la tâche Ray précédente et en démarre une nouvelle. Cela évite le gaspillage de ressources et les conflits de tâches.

  2. Exécuter du code Ray : après une connexion réussie, vous pouvez écrire et exécuter directement du code Ray dans une nouvelle cellule Python. Les journaux sont diffusés en temps réel dans la zone de sortie de la cellule pour un débogage interactif.

    L'exemple suivant définit une tâche distante simple à l'aide du décorateur @ray.remote. La tâche s'exécute sur le cluster Ray, et les journaux ainsi que le résultat final sont renvoyés dans la zone de sortie de la cellule.

    import ray
    import time
    @ray.remote
    def hello_world():
      print("Hello from Lindorm Ray!")
      time.sleep(5)
      return "Task finished."
    # Submit the remote task.
    result_ref = hello_world.remote()
    print(ray.get(result_ref))
  3. (Facultatif) Spécifier des paramètres de démarrage personnalisés : pour configurer des paramètres supplémentaires pour l'environnement Ray, tels que l'installation de packages Python tiers ou le téléchargement de fichiers de code locaux, utilisez %%lindorm_ray pour établir la connexion.

    • Exemple 1 : Installer des dépendances

      Utilisez le paramètre pip pour installer le package jieba dans l'environnement Ray.

      %%lindorm_ray
      {
        "runtime_env": {
          "pip": ["jieba"]
        }
      }

      Une fois l'environnement prêt, importez et utilisez le package dans les tâches Ray suivantes. L'exemple ci-dessous montre comment appeler jieba dans une fonction distante pour la segmentation de mots chinois :

      import ray 
      @ray.remote
      def do_work(x):
          import jieba
          return "/".join(jieba.cut(x))
      print(ray.get(do_work.remote("Welcome to the DataWorks LindormRay solution")))
    • Exemple 2 : Télécharger et utiliser des ressources DataWorks

      Utilisez le paramètre working_dir pour télécharger des ressources depuis Resource Management vers le cluster Ray afin de les importer dans vos tâches.

      Important
      • Lorsque vous utilisez working_dir pour télécharger des ressources, les fichiers sont transférés directement de votre environnement de développement vers le cluster Ray. Une limite de taille de 100 Mo s'applique. Si le package de ressources est trop volumineux, le téléchargement peut échouer ou le nœud Ray peut devenir instable.

      • Pour les ressources ou dépendances volumineuses (plus de 100 Mo), téléchargez-les sur OSS et récupérez-les depuis OSS dans votre code, ou empaquetez-les dans une image personnalisée pour une meilleure stabilité et performance.

      # Reference and declare the path for a resource from Resource Management.
      %%lindorm_ray
      {
          "runtime_env": {
              "working_dir": "/mnt/workspace/_dataworks/resource_references"
          }
      }

      Supposons que vous ayez téléchargé un fichier nommé ray_resource.py dans Resource Management dans DataWorks. Lorsque vous exécutez la cellule suivante, le système analyse la déclaration ##@resource_reference et télécharge la ressource correspondante vers /mnt/workspace/_dataworks/resource_references.

      Exemple de code dans ray_resource.py :

      def fun():
          print("This is a test function in ray_resource.py")
      Important

      Dans l'environnement de développement, après avoir exécuté la cellule contenant ##@resource_reference, vous devez réexécuter la cellule %%lindorm_ray précédente. La réexécution de cette cellule inclut les ressources téléchargées dans le working_dir et les transfère vers le cluster Ray. Vous n'avez pas besoin de réexécuter la cellule dans l'environnement de production.

      import ray 
      ##@resource_reference{"ray_resource.py"}
      @ray.remote
      def do_work(x):
          print('Ray says:', x)
          from ray_resource import fun
          fun()
          return x
      worker = do_work.remote("Welcome to the DataWorks LindormRay solution")
      print(ray.get(worker))
  4. Planification et exploitation en production : après le développement et le débogage, validez et publiez ce nœud de notebook. Il sera planifié périodiquement en tant que nœud Lindorm Ray dans un DAG.

    • Paramétrage : votre code peut utiliser les paramètres de planification DataWorks standard, tels que ${bizdate}.

    • Consultation des journaux : en production, le système charge uniquement le premier 1 Mo de journaux par défaut pour éviter les problèmes de performance. Si les journaux sont tronqués, la sortie fournit un lien pour consulter les journaux complets de la tâche dans la console Lindorm.

    • Libération des ressources : après la fin d'une tâche de production planifiée, la tâche Lindorm Ray passe à un état terminal et libère les ressources. Pendant le développement interactif, terminez la tâche en redémarrant le noyau ou en fermant le notebook.

Annexe : Référence rapide des commandes magiques

Commande magique

Description

Moteur de calcul

o = %odps

Obtient un objet d'entrée PyODPS.

MaxCompute

mf_session = %maxframe

Établit une connexion MaxFrame.

%maxcompute_spark

Crée une session Spark.

MaxCompute Spark

%maxcompute_spark stop

Nettoie la session Spark et arrête la session Livy.

%maxcompute_spark delete

Nettoie la session Spark, puis arrête et supprime la configuration Livy.

%%spark

Dans une cellule Python, se connecte à une ressource de calcul Spark existante.

%emr_serverless_spark

Crée une session Spark.

EMR Serverless Spark

%emr_serverless_spark info

Consulte les détails de la Livy Gateway.

%emr_serverless_spark stop

Nettoie la session Spark et arrête la session Livy.

%emr_serverless_spark delete

Nettoie la session Spark, puis arrête et supprime la configuration Livy.

%emr_serverless_spark refresh_token

Actualise le jeton Livy pour l'environnement de développement personnel.

%adb_spark add

Crée et se connecte à une session ADB Spark réutilisable.

AnalyticDB for Spark

%adb_spark info

Consulte les informations de la session Spark.

%adb_spark cleanup

Arrête et nettoie la session de connexion Spark actuelle.

%lindorm_ray

Établit une connexion Lindorm Ray.

Lindorm Ray

%%lindorm_ray

Établit une connexion Lindorm Ray et configure un environnement d'exécution personnalisé, tel que l'installation de dépendances ou le téléchargement de code.

FAQ

  • Q : Pourquoi obtiens-je une erreur ModuleNotFoundError ou There is no file with id ... lors du référencement d'une ressource d'espace de travail ?

    R : Vérifiez les points suivants :

    • Accédez à Data Development > Resource Management et assurez-vous que la ressource Python MaxCompute est enregistrée. Si cette erreur survient dans l'environnement de production, confirmez que la ressource a également été publiée.

    • Cliquez sur le bouton Restart dans la barre d'outils de l'éditeur Notebook pour recharger la ressource.

  • Q : Après avoir mis à jour une ressource d'espace de travail, pourquoi le Notebook utilise-t-il toujours l'ancienne version ?

    R : Dans les paramètres de DataStudio, définissez DataWorks › Notebook › Resource Reference: Download Strategy sur autoOverwrite, puis cliquez sur Restart Kernel dans la barre d'outils du Notebook.

  • Q : Pourquoi obtiens-je une erreur FileNotFoundError dans l'environnement de développement lors du référencement d'un jeu de données ?

    R : Assurez-vous que le jeu de données est monté dans l'environnement de développement personnel sélectionné.

  • Q : Le référencement d'un jeu de données fonctionne dans l'environnement de développement mais échoue dans l'environnement de production avec l'erreur Execute mount dataset exception! Please check your dataset config.

    R : Assurez-vous que le jeu de données est monté dans les Scheduling Settings du nœud Notebook et que le jeu de données OSS a été autorisé.

    Dans la zone de configuration du jeu de données, si un message rouge « The current DataWorks resource group is not authorized » apparaît sous la liste déroulante du jeu de données, cliquez sur le lien Confirm Authorization à droite pour accorder les autorisations.

  • Q : Comment vérifier la version de mon environnement de développement personnel ?

    R : Dans votre environnement de développement personnel, appuyez sur CMD+SHIFT+P et saisissez « ABOUT » pour consulter la version actuelle. Si une fonctionnalité nécessite la version 0.5.69 ou ultérieure, vous pouvez utiliser l'option One-click Upgrade dans l'invite de mise à niveau qui apparaît.

  • Q : Pourquoi la connexion au moteur Spark échoue-t-elle ?

    R : Suivez ces étapes pour résoudre le problème :

    • Vérifications générales : sur la page de détails de l'espace de travail, accédez à la liste des ressources de calcul. Assurez-vous que la ressource de calcul (MaxCompute, EMR ou ADB) est liée à l'espace de travail et que votre compte dispose des autorisations nécessaires.

    • EMR Serverless Spark : Vérifiez que la Livy Gateway a été créée et qu'elle fonctionne correctement.

    • AnalyticDB for Spark : Concentrez-vous sur la résolution des problèmes réseau. Assurez-vous que vswitchId et securityGroupId sont configurés correctement et qu'il existe une connectivité réseau entre l'environnement de développement personnel et l'instance AnalyticDB for Spark. Vérifiez les règles du groupe de sécurité pour vous assurer qu'elles autorisent la communication sur les ports nécessaires.