Tous les produits
Search
Centre de documentation

:Configuration d'un environnement de développement sous Linux

Dernière mise à jour :Aug 10, 2026

Cette rubrique explique comment configurer un environnement de développement Spark sur MaxCompute.

Si vous utilisez un système d'exploitation Windows, accédez à Configuration d'un environnement de développement sous Windows.

Prérequis

Avant de configurer un environnement de développement Spark sur MaxCompute, vérifiez que les logiciels suivants sont installés sur votre système d'exploitation Linux :

Remarque

Les numéros de version et les chemins d'installation mentionnés dans cette rubrique sont donnés à titre indicatif. La version du logiciel que vous devez télécharger et installer varie selon votre système d'exploitation.

  • JDK

    Les commandes suivantes illustrent l'installation de JDK sur un système d'exploitation Linux. Le nom du package JDK varie selon le contexte. Vous pouvez obtenir le nom du package JDK en exécutant la commande sudo yum -y list java*.

    sudo yum install -y java-1.8.0-openjdk-devel.x86_64
  • Python

    Les commandes suivantes illustrent l'installation de Python sur un système d'exploitation Linux. Le nom du package Python varie selon le contexte.

    # Obtain the Python package. 
    sudo wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
    # Decompress the Python package. 
    sudo tar -zxvf Python-2.7.10.tgz
    # Switch to the path to which the Python package is decompressed and specify the installation path. 
    cd Python-2.7.10
    sudo ./configure --prefix=/usr/local/python2
    # Compile and install the Python package. 
    sudo make
    sudo make install
  • Maven

    Les commandes suivantes illustrent l'installation de Maven sur un système d'exploitation Linux. Le chemin d'accès au package Maven varie selon le contexte.

    # Obtain the Maven package. 
    sudo wget https://dlcdn.apache.org/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz
    # Decompress the Maven package. 
    sudo tar -zxvf apache-maven-3.8.7-bin.tar.gz
  • Git

    Les commandes suivantes illustrent l'installation de Git sur un système d'exploitation Linux.

    # Obtain the Git package. 
    sudo wget https://github.com/git/git/archive/v2.17.0.tar.gz
    # Decompress the Git package. 
    sudo tar -zxvf v2.17.0.tar.gz
    # Install the dependencies that are required for compiling the source code of Git. 
    sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
    # Switch to the path to which the Git package is decompressed. 
    cd git-2.17.0
    # Compile the source code of Git. 
    sudo make prefix=/usr/local/git all
    # Install Git in the /usr/local/git path. 
    sudo make prefix=/usr/local/git install

Téléchargement du package client Spark sur MaxCompute et transfert vers votre système d'exploitation

Le package client Spark sur MaxCompute intègre la fonctionnalité d'authentification MaxCompute. Cela permet à Spark sur MaxCompute de fonctionner comme un client qui soumet des tâches à votre projet MaxCompute via le script spark-submit. MaxCompute fournit des packages de publication pour Spark 1.x, Spark 2.x et Spark 3.x. Vous pouvez télécharger ces packages via les liens suivants :

Transférez le package client Spark sur MaxCompute vers votre système d'exploitation Linux et décompressez-le. Accédez au répertoire contenant le package client Spark sur MaxCompute et exécutez la commande suivante pour le décompresser :

sudo tar -xzvf spark-2.3.0-odps0.33.0.tar.gz

Configuration des variables d'environnement

Remarque

Seuls les utilisateurs disposant des droits d'administrateur peuvent exécuter les commandes de configuration des variables d'environnement présentées dans cette section.

Vous devez configurer les variables d'environnement dans l'interface de ligne de commande (CLI) de votre système d'exploitation Linux. Les informations ci-dessous détaillent la procédure de configuration et fournissent les éléments nécessaires.

  • Configurez les variables d'environnement Java.

    • Obtenez le chemin d'installation de Java. Exemples de commandes :

      # If you use yum to install Java, Java is installed in the /usr path by default. You can run the following command to query the Java installation path. If you use a custom installation path, the actual path prevails. 
      whereis java
      ls -lrt /usr/bin/java
      ls -lrt /etc/alternatives/java
      
      # The following result is returned. In the result, /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64 is the Java installation path. 
      /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64/jre/bin/java

      查找Java路径

    • Modifiez les variables d'environnement Java. Exemples de commandes :

      # Edit the configuration file for environment variables. 
      vim /etc/profile
      
      # Press i to enter the edit mode and add environment variables to the end of the configuration file. 
      # Set JAVA_HOME to the actual Java installation path. 
      export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64
      export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
      export PATH=$JAVA_HOME/bin:$PATH
      # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. 
      
      # Run the following command to make the modification take effect: 
      source /etc/profile
      
      # Check whether the Java environment variables are successfully configured. 
      java -version
      # The following result is returned: 
      openjdk version "1.8.0_322"
      OpenJDK Runtime Environment (build 1.8.0_322-b06)
      OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

      Java环境变量

  • Configurez les variables d'environnement Spark.

    • Obtenez le chemin de décompression du package client Spark sur MaxCompute. L'illustration suivante indique que le chemin est /home/spark-2.3.0-odps0.33.0. Le chemin de décompression et le nom du package varient selon le contexte.获取Spark包所在路径

    • Modifiez les variables d'environnement Spark. Exemples de commandes :

      # Edit the configuration file for environment variables. 
      vim /etc/profile
      # Press i to enter the edit mode and add environment variables to the end of the configuration file. 
      # Set SPARK_HOME to the actual path to which the Spark on MaxCompute client package is decompressed. 
      export SPARK_HOME=/home/spark-2.3.0-odps0.33.0
      export PATH=$SPARK_HOME/bin:$PATH
      # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. 
      
      # Run the following command to make the modification take effect: 
      source /etc/profile

      配置Spark环境变量

  • Configurez les variables d'environnement Python.

    Si vous utilisez PySpark, vous devez configurer les variables d'environnement Python.

    • Obtenez le chemin d'installation de Python. Exemple de commande :配置Python环境变量

    • Modifiez les variables d'environnement Python. Exemples de commandes :

      # Edit the configuration file for environment variables. 
      vim /etc/profile
      
      # Press i to enter the edit mode and add environment variables to the end of the configuration file. 
      # Set PATH to the actual Python installation path. 
      export PATH=/usr/bin/python/bin/:$PATH
      # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. 
      
      # Run the following command to make the modification take effect: 
      source /etc/profile
      
      # Check whether the Python environment variables are successfully configured. 
      python --version
      # The following result is returned: 
      Python 2.7.5

      配置Python环境变量

  • Configurez les variables d'environnement Maven.

    • Obtenez le chemin de décompression du package Maven. L'illustration suivante indique que le chemin est /home/apache-maven-3.8.7. Le chemin de décompression et le nom du package varient selon le contexte.Maven包路径

    • Modifiez les variables d'environnement Maven. Exemples de commandes :

      # Edit the configuration file for environment variables. 
      vim /etc/profile
      
      # Press i to enter the edit mode and add environment variables to the end of the configuration file. 
      # Set MAVEN_HOME to the actual path to which the Maven package is decompressed. 
      export MAVEN_HOME=/home/apache-maven-3.8.7
      export PATH=$MAVEN_HOME/bin:$PATH
      # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. 
      # Run the following command to make the modification take effect: 
      source /etc/profile
      
      # Check whether the Maven environment variables are successfully configured. 
      mvn -version
      # The following result is returned: 
      Apache Maven 3.8.7 (9b656c72d54e5bacbed989b64718c159fe39b537)
      Maven home: /home/apache-maven-3.8.7
      Java version: 1.8.0_322, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-1.1.al7.x86_64/jre
      Default locale: en_US, platform encoding: UTF-8
      OS name: "linux", version: "4.19.91-25.1.al7.x86_64", arch: "amd64", family: "unix"
  • Configurez les variables d'environnement Git.

    • Obtenez le chemin d'installation de Git. Exemples de commandes :

      whereis git

      获取git安装路径

    • Modifiez les variables d'environnement Git. Exemples de commandes :

      # Edit the configuration file for environment variables. 
      vim /etc/profile
      
      # Press i to enter the edit mode and add environment variables to the end of the configuration file. # Set PATH to the actual Git installation path. 
      export PATH=/usr/local/git/bin/:$PATH
      # Press the Esc key to exit the edit mode and enter :wq to close the configuration file. 
      
      # Run the following command to make the modification take effect: 
      source /etc/profile
      
      # Check whether the Git environment variables are successfully configured. 
      git --version
      # The following result is returned: 
      git version 2.24.4

      配置Git环境变量

Configuration du fichier spark-defaults.conf

Lors de la première utilisation du client Spark sur MaxCompute, renommez le fichier spark-defaults.conf.template situé dans le dossier conf du répertoire de décompression du package client Spark sur MaxCompute en spark-defaults.conf. Configurez ensuite les informations dans ce fichier. Sans ce renommage, la configuration ne sera pas prise en compte. Exemples de commandes :

# Switch to the path to which the Spark on MaxCompute client package is decompressed and go to the conf folder. The actual path prevails. 
cd /home/spark-2.3.0-odps0.33.0/conf

# Rename the spark-defaults.conf.template file. 
mv spark-defaults.conf.template spark-defaults.conf

# Edit the spark-defaults.conf file. 
vim spark-defaults.conf
# Press i to enter the edit mode and add the following configuration to the end of the configuration file. 
spark.hadoop.odps.project.name = <MaxCompute_project_name>  
spark.hadoop.odps.access.id = <AccessKey_id>     
spark.hadoop.odps.access.key = <AccessKey_secret>
spark.hadoop.odps.end.point = <Endpoint>   # The endpoint that is used to connect the Spark on MaxCompute client to your MaxCompute project. You can modify the endpoint based on your business requirements. For more information, see Endpoint. 
# For Spark 2.3.0, set spark.sql.catalogImplementation to odps. For Spark 2.4.5, set spark.sql.catalogImplementation to hive. 
spark.sql.catalogImplementation={odps|hive} 
# Retain the following configurations:
spark.hadoop.odps.task.major.version = cupid_v2
spark.hadoop.odps.cupid.container.image.enable = true
spark.hadoop.odps.cupid.container.vm.engine.type = hyper
spark.hadoop.odps.moye.trackurl.host = http://jobview.odps.aliyun.com
  • MaxCompute_project_name : nom du projet MaxCompute auquel vous souhaitez accéder.

    Ce paramètre spécifie le nom de votre projet MaxCompute, et non celui de l'espace de travail DataWorks auquel le projet MaxCompute correspond. Connectez-vous à la console MaxCompute. Dans la barre de navigation supérieure, sélectionnez une région. Dans le volet de navigation de gauche, choisissez Workspace > Projects pour afficher le nom du projet MaxCompute.

  • AccessKey_id : ID AccessKey utilisé pour accéder au projet MaxCompute.

    Vous pouvez obtenir l'ID AccessKey depuis la page AccessKey Pair.

  • AccessKey_secret : secret AccessKey correspondant à l'ID AccessKey.

    Vous pouvez obtenir le secret AccessKey depuis la page AccessKey Pair.

  • Endpoint : endpoint public de la région où réside votre projet MaxCompute.

    Pour plus d'informations sur l'endpoint public de chaque région, consultez la section Endpoints dans différentes régions (Internet).

  • VPC_endpoint : endpoint VPC de la région où réside votre projet MaxCompute.

    Pour plus d'informations sur l'endpoint VPC de chaque région, consultez la section Endpoints dans différentes régions (VPC).

D'autres paramètres de configuration sont requis pour des scénarios et fonctionnalités spécifiques. Pour plus d'informations, consultez la page Détails de configuration de Spark sur MaxCompute.

Préparation d'un projet

Spark sur MaxCompute fournit un modèle de projet de démonstration. Nous vous recommandons de le télécharger et de le copier pour développer votre application.

Important

Dans le projet de démonstration, la portée de dépendance pour Spark sur MaxCompute est fournie. Ne modifiez pas cette portée, sinon la tâche soumise risque de ne pas s'exécuter comme prévu.

Préparez un projet sous un système d'exploitation Linux.

  • Téléchargez le modèle Spark 1.x et compilez-le.

    git clone https://github.com/aliyun/MaxCompute-Spark.git
    cd MaxCompute-Spark/spark-1.x
    mvn clean package
  • Téléchargez le modèle Spark 2.x et compilez-le.

    git clone https://github.com/aliyun/MaxCompute-Spark.git
    cd MaxCompute-Spark/spark-2.x
    mvn clean package
  • Téléchargez le modèle Spark 3.x et compilez-le.

    git clone https://github.com/aliyun/MaxCompute-Spark.git
    cd MaxCompute-Spark/spark-3.x
    mvn clean package

Si un message d'erreur indiquant que les configurations de l'environnement ne sont pas valides s'affiche après l'exécution des commandes précédentes, vérifiez les configurations conformément aux instructions ci-dessus. Modifiez les configurations si nécessaire.

Configuration des dépendances

Dans le projet Spark sur MaxCompute que vous avez préparé, configurez les dépendances. Exemples de commandes :

  • Configurez les dépendances requises pour accéder aux tables de votre projet MaxCompute.

    • Utilisation du modèle Spark-1.x.

      # Go to the spark-1.x folder. 
      cd MaxCompute-Spark/spark-1.x
      
      # Edit the POM file to add the odps-spark-datasource dependency. 
      <dependency>
        <groupId>com.aliyun.odps</groupId>
        <artifactId>odps-spark-datasource_2.10</artifactId>
        <version>3.3.8-public</version>
      </dependency>                           
    • Utilisation du modèle Spark-2.x.

      # Go to the spark-2.x folder. 
      cd MaxCompute-Spark/spark-2.x
      
      # Edit the POM file to add the odps-spark-datasource dependency. 
      <dependency>
          <groupId>com.aliyun.odps</groupId>
          <artifactId>odps-spark-datasource_2.11</artifactId>
          <version>3.3.8-public</version>
      </dependency>
  • Configurez la dépendance requise pour accéder à Object Storage Service (OSS).

    Si votre tâche doit accéder à OSS, ajoutez la dépendance suivante :

    <dependency>
        <groupId>com.aliyun.odps</groupId>
        <artifactId>hadoop-fs-oss</artifactId>
        <version>3.3.8-public</version>
    </dependency>

Pour plus d'informations sur les dépendances requises lors de l'utilisation des modèles Spark-1.x, Spark-2.x ou Spark-3.x, consultez les pages Spark-1.x pom, Spark-2.x pom ou Spark-3.x pom.

Référence à des fichiers externes

Si vous développez les types de tâches Spark suivants, vous devez référencer des fichiers externes :

  • Tâches Spark nécessitant la lecture de données à partir de fichiers de configuration spécifiques.

  • Tâches Spark nécessitant des packages de ressources supplémentaires ou des bibliothèques tierces, telles que des fichiers JAR ou des bibliothèques Python.

En pratique, vous devez transférer les fichiers externes avant de les référencer. Vous pouvez procéder de l'une des manières suivantes :

  • Méthode 1 : Transfert de fichiers externes via les paramètres Spark.

    Spark sur MaxCompute prend en charge les paramètres suivants définis par Apache Spark : --jars, --py-files, --files et --archives. Vous pouvez configurer ces paramètres pour transférer des fichiers externes lors de la soumission des tâches. Lors de l'exécution des tâches, ces fichiers externes sont téléchargés dans vos répertoires de travail.

    • Utilisez le script spark-submit pour transférer des fichiers sur le client Spark sur MaxCompute.

      Remarque
      • --jars : Ce paramètre spécifie les packages JAR que vous souhaitez transférer vers les répertoires de travail actuels du pilote (driver) et de chaque exécuteur (executor). Les noms des packages sont séparés par des virgules (,). Ces packages JAR sont ajoutés aux classpaths du pilote et de chaque exécuteur. Vous pouvez utiliser "./your_jar_name" dans les configurations des tâches Spark pour spécifier ces packages, comme c'est le cas dans Apache Spark.

      • --files et --py-files : Ces deux paramètres spécifient les fichiers courants ou les fichiers Python que vous souhaitez transférer vers les répertoires de travail actuels du pilote et de chaque exécuteur. Les noms des fichiers sont séparés par des virgules (,). Vous pouvez utiliser "./your_file_name" dans les configurations des tâches Spark pour spécifier ces fichiers, comme c'est le cas dans Apache Spark.

      • --archives : Ce paramètre diffère légèrement de celui défini par Apache Spark. Configurez ce paramètre au format xxx#yyy et séparez les noms de fichiers par des virgules (,). Après avoir configuré le paramètre --archives, les fichiers d'archive spécifiés, tels que les fichiers ZIP, sont décompressés dans les sous-répertoires des répertoires de travail actuels du pilote et de chaque exécuteur. Par exemple, si ce paramètre est défini sur xx.zip#yy, vous devez utiliser "./yy/xx/" pour référencer le contenu du fichier d'archive. Si ce paramètre est défini sur xx.zip, vous devez utiliser "./xx.zip/xx/" pour référencer le contenu du fichier d'archive. Si vous devez utiliser "./xxx/" pour décompresser le fichier d'archive directement dans le répertoire de travail actuel, vous devez utiliser le paramètre spark.hadoop.odps.cupid.resources.

    • Utilisez DataWorks pour ajouter les ressources requises par une tâche. Pour plus d'informations, consultez la section Création et utilisation de ressources MaxCompute.

      Remarque

      Dans la console DataWorks, vous pouvez transférer des fichiers d'une taille maximale de 200 Mo. Si la taille des fichiers à transférer dépasse 200 Mo, vous devez utiliser le client MaxCompute pour les transférer en tant que ressources MaxCompute, puis les ajouter sur la page DataStudio de la console DataWorks. Pour plus d'informations sur les ressources MaxCompute, consultez la section Gestion des ressources MaxCompute.

  • Méthode 2 : Transfert de fichiers en tant que ressources MaxCompute.

    Spark sur MaxCompute propose le paramètre spark.hadoop.odps.cupid.resources. Ce paramètre vous permet de référencer directement les ressources dans MaxCompute. Lors de l'exécution d'une tâche, les ressources référencées sont transférées dans vos répertoires de travail. Pour transférer des fichiers en tant que ressources MaxCompute, procédez comme suit :

    1. Connectez-vous au client MaxCompute et transférez les fichiers en tant que ressources vers votre projet MaxCompute. La taille maximale d'un fichier transférable est de 500 Mo.

    2. Ajoutez le paramètre spark.hadoop.odps.cupid.resources aux configurations de votre tâche Spark. Ce paramètre spécifie les ressources MaxCompute nécessaires à l'exécution de la tâche Spark. Configurez ce paramètre au format <projectname>.<resourcename>. Si vous devez référencer plusieurs fichiers, séparez les noms de fichiers par des virgules (,). La configuration suivante en est un exemple.

      spark.hadoop.odps.cupid.resources=public.python-python-2.7-ucs4.zip,public.myjar.jar

      Le fichier de ressource spécifié est téléchargé dans les répertoires de travail actuels du pilote et de chaque exécuteur. Par défaut, le fichier téléchargé porte un nom au format <projectname>.<resourcename>.

      Vous pouvez également renommer le fichier au format <projectname>.<resourcename>:<newresourcename>. La configuration suivante en est un exemple.

      spark.hadoop.odps.cupid.resources=public.myjar.jar:myjar.jar
      Important

      Le paramètre spark.hadoop.odps.cupid.resources n'est pris en compte que si vous le configurez dans le fichier spark-defaults.conf ou dans la console DataWorks. Ce paramètre n'a aucun effet s'il est écrit directement dans le code.

Après avoir transféré les fichiers via l'une des méthodes précédentes, vous pouvez référencer des fichiers externes dans le code. L'extrait de code suivant en est un exemple :

val targetFile = "File name"
val file = Source.fromFile(targetFile)
for (line <- file.getLines)
    println(line)
file.close

Test de fumée SparkPi

Une fois les opérations précédentes terminées, effectuez un test de fumée pour vérifier la connectivité de bout en bout de Spark sur MaxCompute. Par exemple, vous pouvez exécuter les commandes suivantes pour effectuer un test de fumée SparkPi pour une application Spark 2.x :

# /path/to/MaxCompute-Spark Configure a valid path for the compiled JAR package of the application. 
cd $SPARK_HOME
bin/spark-submit \
--class com.aliyun.odps.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
/path/to/your/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar

# If the following log information is displayed, smoke testing is successful. 
19/06/11 11:57:30 INFO Client: 
         client token: N/A
         diagnostics: N/A
         ApplicationMaster host: 11.222.166.90
         ApplicationMaster RPC port: 38965
         queue: queue
         start time: 1560225401092
         final status: SUCCEEDED

Remarques sur l'exécution de Spark sur MaxCompute en mode local avec IntelliJ IDEA

Dans la plupart des cas, le code s'exécute en mode cluster après un débogage local réussi. Toutefois, Spark sur MaxCompute permet d'exécuter le code en mode local via IntelliJ IDEA. Lors de l'exécution du code en mode local avec IntelliJ IDEA, tenez compte des points suivants :

  • Spécifiez le paramètre spark.master dans le code.

    val spark = SparkSession
          .builder()
          .appName("SparkPi")
          .config("spark.master", "local[4]") // The code can run after you set spark.master to local[N]. N indicates the number of concurrent Spark jobs. 
          .getOrCreate()
  • Ajoutez la dépendance suivante du client Spark sur MaxCompute dans IntelliJ IDEA.

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_${scala.binary.version}</artifactId>
        <version>${spark.version}</version>
        <scope>provided</scope> 
    </dependency>

    Dans le fichier pom.xml, le paramètre scope est défini sur provided. Ce paramétrage peut provoquer l'erreur « NoClassDefFoundError » lors de l'exécution du code.

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$
        at com.aliyun.odps.spark.examples.SparkPi$.main(SparkPi.scala:27)
        at com.aliyun.odps.spark.examples.Spa. r. kPi.main(SparkPi.scala)
    Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 2 more

    Vous pouvez suivre les étapes ci-dessous pour ajouter manuellement le répertoire spécifié par le paramètre --jars sur Spark sur MaxCompute au modèle de projet d'IntelliJ IDEA. Ainsi, la configuration scope=provided peut être conservée et l'erreur « NoClassDefFoundError » ne sera pas renvoyée lors de l'exécution du code en mode local avec IntelliJ IDEA.

    1. Dans la barre de menus principale d'IntelliJ IDEA, choisissez File > Project Structure….44

    2. Sur la page Project Structure, cliquez sur Modules dans le volet de navigation de gauche. Sélectionnez ensuite le package de ressources et cliquez sur l'onglet Dependencies correspondant au package de ressources.

    3. Dans l'onglet Dependencies, cliquez sur le signe plus (+) en bas à gauche et sélectionnez JARs or directories… pour ajouter le répertoire spécifié par le paramètre --jars sur Spark sur MaxCompute.

  • Le fichier spark-defaults.conf ne peut pas être référencé directement lors de l'exécution du code en mode local. Vous devez configurer manuellement les paramètres pertinents dans le code.

    Si vous soumettez des tâches via le script spark-submit, le système lit les configurations à partir du fichier spark-defaults.conf. Si vous soumettez des tâches en mode local, vous devez configurer manuellement les paramètres pertinents dans le code. Le code suivant illustre l'utilisation de Spark SQL pour lire des données à partir de tables MaxCompute en mode local.

    val spark = SparkSession
          .builder()
          .appName("SparkPi")
          .config("spark.master", "local[4]") // The code can run after you set spark.master to local[N]. N indicates the number of concurrent Spark jobs. 
          .config("spark.hadoop.odps.project.name", "****")
          .config("spark.hadoop.odps.access.id", "****")
          .config("spark.hadoop.odps.access.key", "****")
          .config("spark.hadoop.odps.end.point", "http://service.cn.maxcompute.aliyun.com/api")
          .config("spark.sql.catalogImplementation", "odps")
          .getOrCreate()

Précautions d'utilisation de Spark 2.4.5

  • Soumission de tâches avec Spark 2.4.5

    • Soumettez une tâche dans un cluster Yarn. Pour plus d'informations, consultez la section Mode cluster.

    • Définissez le paramètre spark.hadoop.odps.spark.version sur spark-2.4.5-odps0.33.0 dans la console DataWorks. Si la version Spark des groupes de ressources exclusifs dans DataWorks n'est pas mise à jour vers Spark 2.4.5, vous pouvez utiliser des groupes de ressources partagés pour planifier les tâches ou contacter l'équipe d'assistance technique MaxCompute pour mettre à jour la version Spark.

  • Changements liés à l'utilisation de Spark 2.4.5

    • Si vous soumettez des tâches dans un cluster Yarn, vous devez exécuter la commande export HADOOP_CONF_DIR=$SPARK_HOME/conf pour ajouter la variable d'environnement SPARK_HOME.

    • Si vous effectuez un débogage en mode local, vous devez créer un fichier nommé odps.conf dans le chemin $SPARK_HOME/conf et y ajouter les configurations suivantes :

      odps.project.name = 
      odps.access.id = 
      odps.access.key =
      odps.end.point =
  • Changements dans les paramètres de Spark 2.4.5

    • spark.sql.catalogImplementation : Ce paramètre est défini sur hive.

    • spark.sql.sources.default : Ce paramètre est défini sur hive.

    • spark.sql.odps.columnarReaderBatchSize : spécifie le nombre de lignes lues à la fois par le lecteur vectorisé. Valeur par défaut : 4096.

    • spark.sql.odps.enableVectorizedReader : spécifie s'il faut activer le lecteur vectorisé. Valeur par défaut : True.

    • spark.sql.odps.enableVectorizedWriter : spécifie s'il faut activer l'écriture vectorisée. Valeur par défaut : True.

    • spark.sql.odps.split.size : Ce paramètre permet d'ajuster la concurrence des opérations de lecture de données sur les tables MaxCompute. Par défaut, ce paramètre est défini sur 256 pour chaque partition. Unité : Mo.

Précautions d'utilisation de Spark 3.1.1

  • Soumission de tâches avec Spark 3.1.1

    • Soumettez une tâche dans un cluster Yarn. Pour plus d'informations, consultez la section Mode cluster.

    • Si vous souhaitez soumettre des tâches Spark version 3.1.1 écrites en Scala ou Java, vous pouvez ajouter les configurations suivantes au fichier spark-defaults.conf :

      spark.hadoop.odps.cupid.resources = public.__spark_libs__3.1.1-odps0.33.0.zip,[projectname].[Main JAR Package],[projectname].[Other JAR Package]                 
      spark.driver.extraClassPath = ./public.__spark_libs__3.1.1-odps0.33.0.zip/*            
      spark.executor.extraClassPath = ./public.__spark_libs__3.1.1-odps0.33.0.zip/* 
      Remarque
      • Si vous souhaitez soumettre des tâches Spark version 3.1.1, vous devez spécifier toutes les ressources requises dans le paramètre spark.hadoop.odps.cupid.resources. Les ressources requises incluent le package JAR principal. Sinon, la classe Java concernée pourrait ne pas être trouvée.

      • Vous ne pouvez pas soumettre de tâches PySpark via les méthodes précédentes.

  • Changements liés à l'utilisation de Spark 3.1.1

    • Si vous soumettez des tâches dans un cluster Yarn, vous devez exécuter la commande export HADOOP_CONF_DIR=$SPARK_HOME/conf pour ajouter la variable d'environnement SPARK_HOME.

    • Si vous soumettez des tâches PySpark dans un cluster Yarn, vous devez ajouter les configurations suivantes dans le fichier spark-defaults.conf pour utiliser Spark pour Python 3 :

      spark.hadoop.odps.cupid.resources = public.python-3.7.9-ucs4.tar.gz
      spark.pyspark.python = ./public.python-3.7.9-ucs4.tar.gz/python-3.7.9-ucs4/bin/python3
    • Si vous effectuez un débogage en mode local, vous devez procéder comme suit :

      • Vous devez créer un fichier odps.conf dans le répertoire $SPARK_HOME/conf et y ajouter les configurations suivantes :

        odps.project.name = 
        odps.access.id = 
        odps.access.key =
        odps.end.point =
      • Vous devez ajouter spark.hadoop.fs.defaultFS = file:/// au code. Exemple de code :

        val spark = SparkSession
          .builder()
          .config("spark.hadoop.fs.defaultFS", "file:///")
          .enableHiveSupport()
          .getOrCreate()
  • Changements dans les paramètres de Spark 3.1.1

    • spark.sql.defaultCatalog : Ce paramètre est défini sur odps.

    • spark.sql.catalog.odps : Ce paramètre est défini sur org.apache.spark.sql.execution.datasources.v2.odps.OdpsTableCatalog.

    • spark.sql.sources.partitionOverwriteMode : Ce paramètre est défini sur dynamic.

    • spark.sql.extensions : Ce paramètre est défini sur org.apache.spark.sql.execution.datasources.v2.odps.extension.OdpsExtensions.

    • spark.sql.odps.enableVectorizedReader : spécifie s'il faut activer le lecteur vectorisé. Valeur par défaut : True.

    • spark.sql.odps.enableVectorizedWriter : spécifie s'il faut activer l'écriture vectorisée. Valeur par défaut : True.

    • spark.sql.catalog.odps.splitSizeInMB : Ce paramètre permet d'ajuster la concurrence des opérations de lecture de données sur les tables MaxCompute. Par défaut, ce paramètre est défini sur 256 pour chaque partition. Unité : Mo.