Spark sur MaxCompute prend en charge les modes d'exécution local, cluster et DataWorks.
Mode local
Spark sur MaxCompute vous permet de déboguer des jobs en mode local, tel qu'utilisé dans Spark natif.
Le mode local est similaire au mode cluster YARN. Pour utiliser le mode local, préparez les éléments suivants :
Créez un projet MaxCompute et obtenez l'AccessKey ID et l'AccessKey Secret du compte permettant d'accéder au projet MaxCompute.
Téléchargez le client Spark sur MaxCompute.
Préparez les variables d'environnement.
Configurez le fichier spark-defaults.conf.
Téléchargez et compilez un modèle de projet de démonstration.
Pour plus d'informations, reportez-vous à Configurer un environnement de développement Linux.
Soumettez un job en exécutant le script spark-submit sur le client Spark sur MaxCompute. L'exemple de code suivant illustre cette procédure :
## Java/Scala
cd $SPARK_HOME
./bin/spark-submit --master local[4] --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/odps-spark-examples/spark-examples/target/spark-examples-2.0.0-SNAPSHOT-shaded.jar
## PySpark
cd $SPARK_HOME
./bin/spark-submit --master local[4] \
/path/to/odps-spark-examples/spark-examples/src/main/python/odps_table_rw.py
Précautions
En mode local, Tunnel sert à lire et écrire des données dans les tables MaxCompute. Par conséquent, les opérations de lecture et d'écriture en mode local sont plus lentes que celles en mode cluster YARN.
-
En mode local, Spark sur MaxCompute s'exécute sur votre machine locale. Vous pouvez donc avoir accès à Spark sur MaxCompute en mode local via un VPC (Virtual Private Cloud), mais pas à Spark sur MaxCompute en mode cluster YARN via un VPC.
En mode local, le réseau n'est pas isolé. En revanche, en mode cluster YARN, le réseau est isolé et vous devez configurer les paramètres requis pour l'accès via un VPC.
En mode local, utilisez un endpoint public pour accéder à Spark sur MaxCompute via un VPC. Toutefois, en mode cluster YARN, utilisez un endpoint interne pour accéder à Spark sur MaxCompute via un VPC. Pour plus d'informations sur les endpoints de MaxCompute, reportez-vous à Endpoint.
Si vous exécutez Spark sur MaxCompute dans IntelliJ IDEA en mode local, spécifiez les configurations associées dans le code. Supprimez ces configurations du code si vous souhaitez exécuter Spark sur MaxCompute dans IntelliJ IDEA en mode cluster YARN.
Exécuter Spark sur MaxCompute dans IntelliJ IDEA en mode local
Spark sur MaxCompute vous permet d'exécuter directement le code dans IntelliJ IDEA en mode local en utilisant N threads. Cela vous évite de soumettre le code sur le client Spark sur MaxCompute. Tenez compte des points suivants lors de l'exécution du code :
-
Spécifiez manuellement les configurations associées dans le fichier
odps.confdu répertoire main/resource lorsque vous exécutez le code dans IntelliJ IDEA en mode local. Vous ne pouvez pas référencer directement les configurations du fichier spark-defaults.conf. L'exemple de code suivant illustre cette configuration :RemarqueSpécifiez les éléments de configuration dans le fichier
odps.confpour Spark 2.4.5 et versions ultérieures.dops.access.id="" odps.access.key="" odps.end.point="" odps.project.name="" -
Ajoutez manuellement les dépendances requises dans le dossier
jarsdu client Spark sur MaxCompute dans IntelliJ IDEA. Dans le cas contraire, l'erreur suivante s'affiche :the value of spark.sql.catalogimplementation should be one of hive in-memory but was odpsSuivez les étapes ci-dessous pour configurer les dépendances :
Dans la barre de menus principale d'IntelliJ IDEA, choisissez .

Sur la page Project Structure , cliquez sur Modules dans le volet de navigation de gauche. Dans l'onglet qui s'affiche, cliquez sur spark-examples_2.11. Dans le panneau qui apparaît, cliquez sur l'onglet Dependencies . Cliquez ensuite sur l'icône
dans le coin inférieur gauche et sélectionnez JARS or directories .
Dans le dossier jars , choisissez la version requise du package Spark sur MaxCompute > jars > fichier JAR requis et cliquez sur Open dans le coin inférieur droit.

Cliquez sur OK .

Soumettez les configurations dans IntelliJ IDEA.

Mode cluster
En mode cluster, spécifiez la méthode Main comme point d'entrée d'une application personnalisée. Un job Spark se termine lorsque la méthode Main réussit ou échoue. Ce mode convient aux jobs hors ligne. Utilisez Spark sur MaxCompute dans ce mode conjointement avec DataWorks pour planifier des jobs. L'exemple de code suivant montre comment utiliser les lignes de commande pour exécuter Spark sur MaxCompute dans ce mode :
# /path/to/MaxCompute-Spark: the path where the compiled application JAR package is saved.
cd $SPARK_HOME
bin/spark-submit --master yarn-cluster --class com.aliyun.odps.spark.examples.SparkPi \
/path/to/MaxCompute-Spark/spark-2.x/target/spark-examples_2.11-1.0.0-SNAPSHOT-shaded.jar
Mode DataWorks
Exécutez les jobs hors ligne de Spark sur MaxCompute en mode cluster dans DataWorks afin d'intégrer et de planifier d'autres types de nœuds.
Effectuez les étapes suivantes :
-
Téléchargez les ressources requises dans un workflow DataWorks et cliquez sur l'icône Submit .
Dans le workflow créé, sélectionnez ODPS Spark depuis Data Analytics .
-
Double-cliquez sur le nœud ODPS Spark dans le workflow et configurez les paramètres du job Spark. Pour le nœud ODPS Spark, le paramètre Spark Version propose trois options, et le paramètre Language en propose deux. Les autres paramètres à configurer varient en fonction du paramètre Language . Configurez les paramètres selon les instructions affichées. Pour plus d'informations, reportez-vous à Développer une tâche MaxCompute Spark . Où :
Main JAR Resource : le fichier de ressource utilisé par le job. Téléchargez le fichier de ressource dans DataWorks avant d'effectuer cette opération.
-
Configuration Items : les éléments de configuration requis pour soumettre le job.
Il n'est pas nécessaire de configurer
spark.hadoop.odps.access.id,spark.hadoop.odps.access.keyetspark.hadoop.odps.end.point. Par défaut, les valeurs de ces éléments de configuration sont identiques à celles du projet MaxCompute. Vous pouvez également spécifier explicitement ces éléments de configuration pour remplacer leurs valeurs par défaut.Ajoutez les configurations du fichier
spark-defaults.confaux éléments de configuration du nœud ODPS Spark, un par un. Les configurations incluent le nombre d'executors, la taille de la mémoire etspark.hadoop.odps.runtime.end.point.Le fichier de ressource et les éléments de configuration du nœud ODPS Spark correspondent aux paramètres et éléments de la commande spark-submit, comme décrit dans le tableau suivant. Il n'est pas nécessaire de télécharger le fichier spark-defaults.conf . En revanche, ajoutez les configurations du fichier spark-defaults.conf aux éléments de configuration du nœud ODPS Spark, un par un.
Nœud ODPS Spark
spark-submit
Main JAR Resource et Main Python Resource
app jar or python fileÉléments de configuration
--conf PROP=VALUEClasse principale
--class CLASS_NAMEArguments
[app arguments]Ressources JAR
--jars JARSRessources Python
--py-files PY_FILESRessources File
--files FILESRessources Archive
--archives ARCHIVES
-
Exécutez le nœud ODPS Spark pour afficher les journaux d'opération du job et obtenir les URL de Logview et Jobview à partir des journaux pour une analyse et un diagnostic approfondis.
Une fois le job Spark défini, vous pouvez orchestrer et planifier des services de différents types dans le workflow.