Tous les produits
Search
Centre de documentation

DataWorks:Développer une tâche MaxCompute Spark

Dernière mise à jour :Aug 09, 2026

Les tâches Spark on MaxCompute peuvent s'exécuter en mode local ou en mode cluster. Dans DataWorks, vous pouvez planifier des tâches Spark on MaxCompute hors ligne en mode cluster et les intégrer à d'autres types de nœuds.

Présentation

Spark on MaxCompute est un service de calcul MaxCompute compatible avec la version open source de Spark. Il fournit un framework de calcul Spark reposant sur des ressources de calcul unifiées et un système d'autorisations pour les jeux de données. Dans DataWorks, vous pouvez utiliser un nœud MaxCompute Spark pour planifier et exécuter des tâches Spark on MaxCompute, et les intégrer à d'autres tâches.

Spark on MaxCompute prend en charge le développement en Java, Scala et Python, et exécute les tâches en mode local ou en mode cluster. Dans DataWorks, les tâches hors ligne Spark on MaxCompute s'exécutent en mode cluster. Pour plus d'informations sur les modes d'exécution, consultez Modes d'exécution.

Limites

Si une erreur se produit lors de la validation d'un nœud ODPS Spark utilisant la version Spark 3.X, achetez un groupe de ressources serverless. Pour plus d'informations, reportez-vous à Créer et utiliser un groupe de ressources serverless.

Prérequis

Un nœud MaxCompute Spark prend en charge Java/Scala et Python. Les étapes de développement et le processus de configuration diffèrent selon le langage utilisé.

Java/Scala

Avant d'exécuter du code Java ou Scala dans un nœud ODPS Spark, développez la tâche Spark on MaxCompute sur votre machine locale et importez le code dans DataWorks en tant que ressource MaxCompute. Procédez comme suit :

  1. Préparez l'environnement de développement.

    Vous devez préparer l'environnement de développement dans lequel vous souhaitez exécuter une tâche Spark on MaxCompute, en fonction du système d'exploitation utilisé. Pour plus d'informations, consultez Configurer un environnement de développement Linux ou Configurer un environnement de développement Windows.

  2. Développez le code Java ou Scala.

    Avant d'exécuter du code Java ou Scala dans un nœud ODPS Spark, vous devez finaliser le développement du code pour une tâche Spark on MaxCompute sur votre machine locale ou dans l'environnement de développement préparé. Nous vous recommandons d'utiliser le modèle de projet exemple fourni par Spark on MaxCompute.

  3. Empaquetez le code développé et importez-le dans DataWorks.

    Une fois le code développé, vous devez l'empaqueter et importer le package dans DataWorks en tant que ressource MaxCompute. Pour plus d'informations, consultez Créer et utiliser des ressources MaxCompute.

Langage de programmation : Python (utiliser l'environnement Python par défaut)

Vous pouvez développer une tâche PySpark en écrivant du code dans une ressource Python en ligne dans DataWorks et en l'exécutant via un nœud ODPS Spark. Pour plus d'informations, consultez Créer et utiliser des ressources MaxCompute et Développer une application Spark on MaxCompute à l'aide de PySpark.

Remarque

Vous pouvez utiliser l'environnement Python par défaut fourni par DataWorks pour développer votre code. Si les packages tiers pris en charge par l'environnement Python par défaut ne répondent pas aux exigences de la tâche PySpark, vous pouvez vous reporter à la section Langage de programmation : Python (utiliser un environnement Python personnalisé) pour préparer un environnement Python personnalisé. Vous pouvez également utiliser les nœuds PyODPS 2 ou les nœuds PyODPS 3, qui prennent en charge davantage de ressources Python pour le développement.

Langage de programmation : Python (utiliser un environnement Python personnalisé)

Si l'environnement Python par défaut ne répond pas à vos besoins, préparez un environnement Python personnalisé en suivant les étapes ci-dessous.

  1. Préparez un environnement Python sur votre machine locale.

    Vous pouvez consulter Versions Python PySpark et dépendances prises en charge pour configurer un environnement Python adapté à vos besoins métier.

  2. Empaquetez le code de l'environnement Python et importez le package dans DataWorks.

    Vous devez empaqueter le code de l'environnement Python au format ZIP et importer le package dans DataWorks en tant que ressource MaxCompute. Ainsi, vous pourrez exécuter la tâche Spark on MaxCompute dans cet environnement. Pour plus d'informations, consultez Créer et utiliser des ressources MaxCompute.

Description des paramètres

DataWorks exécute les tâches Spark on MaxCompute hors ligne en mode cluster. Vous devez spécifier le point d'entrée de votre application dans la main méthode. La tâche se termine lorsque l'exécution de la main méthode est achevée, avec un statut Success ou Fail. Vous devez également ajouter individuellement chaque configuration issue du fichier spark-defaults.conf au nœud MaxCompute Spark, telles que le nombre d'instances executor, la taille de la mémoire et la configuration spark.hadoop.odps.runtime.end.point.

Remarque

Il n'est pas nécessaire d'importer le fichier spark-defaults.conf. Ajoutez plutôt chaque configuration du fichier spark-defaults.conf individuellement en tant qu'élément de configuration pour le nœud MaxCompute Spark.

Paramètre

Description

Commande spark-submit

Spark Version

La version de Spark. Valeurs valides : Spark1.x, Spark2.x et Spark3.x.

Remarque

Si une erreur se produit lors de la validation d'un nœud ODPS Spark utilisant la version Spark 3.X, achetez un groupe de ressources serverless. Pour plus d'informations, reportez-vous à Créer et utiliser un groupe de ressources serverless.

Aucun

Language

Sélectionnez Java/Scala ou Python en fonction du langage de développement de votre tâche Spark on MaxCompute.

Aucun

Ressource JAR principale

Le fichier de ressource JAR ou Python principal.

Vous devez importer le fichier de ressource requis dans DataWorks et le valider au préalable. Pour plus d'informations, consultez Créer et utiliser des ressources MaxCompute.

app jar or Python file

Configuration Item

Les éléments de configuration requis pour soumettre la tâche Spark on MaxCompute.

  • Vous n'avez pas besoin de configurer spark.hadoop.odps.access.id (AccessKey ID), spark.hadoop.odps.access.key (AccessKey Secret) ni spark.hadoop.odps.end.point (endpoint). La plateforme injecte les valeurs du projet MaxCompute actuel par défaut. Vous pouvez les configurer explicitement pour remplacer les valeurs par défaut.

  • Vous n'avez pas besoin d'importer un fichier spark-defaults.conf. Ajoutez plutôt chaque configuration du fichier spark-defaults.conf individuellement en tant qu'élément de configuration pour le nœud MaxCompute Spark, tel que le nombre d'exécuteurs, la taille de la mémoire et la configuration spark.hadoop.odps.runtime.end.point.

--conf PROP=VALUE

Main Class

Le nom de la classe principale. Ce paramètre est obligatoire lorsque le paramètre Language est défini sur Java/Scala.

--class CLASS_NAME

Parameter

Ajoutez les arguments de votre application selon les besoins, séparés par des espaces. DataWorks prend en charge les paramètres de planification au format ${nom_variable}. Après avoir configuré les variables dans le champ Parameter, vous devez leur attribuer des valeurs dans le volet de navigation de droite sous Scheduling Settings > Parameter.

Remarque

Pour obtenir des informations sur les formats pris en charge pour les paramètres de planification, consultez Formats pris en charge pour les paramètres de planification.

[app arguments]

Autres ressources

Les types de ressources suivants sont également pris en charge. Vous pouvez sélectionner les types de ressources ci-dessous en fonction de vos besoins métier.

  • Ressource JAR : disponible uniquement lorsque le paramètre Language est défini sur Java/Scala.

  • Ressource Python : disponible uniquement lorsque le paramètre Language est défini sur Python.

  • Ressource de fichier

  • Ressource d'archive : affiche uniquement les ressources compressées au format ZIP.

Vous devez importer le fichier de ressource requis dans DataWorks et le valider au préalable. Pour plus d'informations, consultez Créer et utiliser des ressources MaxCompute.

Commandes pour différents types de ressources :

  • --jars JARS

  • --py-files PY_FILES

  • --files FILES

  • --archives ARCHIVES

Exemple simple d'édition de code

L'exemple suivant utilise un nœud ODPS Spark pour développer une tâche Spark on MaxCompute. Dans cet exemple, la tâche détermine si une chaîne peut être convertie en chiffres.

  1. Créez une ressource.

    1. Sur la page DataStudio, créez une nouvelle ressource Python et nommez-la spark_is_number.py. Pour plus d'informations, consultez Créer et utiliser des ressources MaxCompute. Utilisez le code suivant :

      # -*- coding: utf-8 -*-
      import sys
      from pyspark.sql import SparkSession
      try:
          # for python 2
          reload(sys)
          sys.setdefaultencoding('utf8')
      except:
          # python 3 not needed
          pass
      if __name__ == '__main__':
          spark = SparkSession.builder\
              .appName("spark sql")\
              .config("spark.sql.broadcastTimeout", 20 * 60)\
              .config("spark.sql.crossJoin.enabled", True)\
              .config("odps.exec.dynamic.partition.mode", "nonstrict")\
              .config("spark.sql.catalogImplementation", "odps")\
              .getOrCreate()
      def is_number(s):
          try:
              float(s)
              return True
          except ValueError:
              pass
          try:
              import unicodedata
              unicodedata.numeric(s)
              return True
          except (TypeError, ValueError):
              pass
          return False
      print(is_number('foo'))
      print(is_number('1'))
      print(is_number('1.3'))
      print(is_number('-1.37'))
      print(is_number('1e3'))
    2. Enregistrez et validez la ressource.

  2. Dans le nœud ODPS Spark créé, configurez les paramètres et les propriétés de planification de la tâche MaxCompute Spark en vous référant à la section Description des paramètres de cette rubrique, puis enregistrez et validez le nœud.

    |
    **Paramètre**
    |
    **Description**
    | | --- | --- | |
    Version Spark
    |
    Sélectionnez Spark2.x.
    | |
    Langage
    |
    Sélectionnez Python.
    | |
    Ressource Python principale
    |
    La ressource Python **spark_is_number.py** que vous avez créée.
    |















  3. Accédez au centre d'opérations dans l'environnement de développement pour effectuer un remplissage des données pour le nœud ODPS Spark. Pour plus d'informations, consultez Remplir les données et afficher les instances de remplissage des données (nouvelle version).

    Remarque

    DataWorks ne fournit pas de points d'entrée pour exécuter les nœuds ODPS Spark dans DataStudio. Vous devez exécuter les nœuds ODPS Spark dans le centre d'opérations de l'environnement de développement.

  4. Consultez le résultat.

    Une fois l'instance de remplissage des données exécutée avec succès, cliquez sur tracking URL dans les journaux d'exécution générés pour afficher le résultat. Les informations suivantes sont renvoyées :

    False
    True
    True
    True
    True

Exemples avancés d'édition de code

Pour le développement Spark on MaxCompute dans d'autres scénarios, consultez les rubriques suivantes :

Étapes suivantes

Après avoir développé la tâche Spark on MaxCompute, vous pouvez effectuer les opérations suivantes :