Spark on MaxCompute prend en charge l'exécution des tâches en mode local et en mode cluster. Dans DataWorks, vous pouvez exécuter les tâches hors ligne Spark on MaxCompute en mode cluster afin de les intégrer à d'autres types de nœuds pour la planification. Cette rubrique explique comment configurer et planifier des tâches Spark on MaxCompute à l'aide de DataWorks.
Présentation
Spark on MaxCompute est un service de calcul fourni par MaxCompute, compatible avec Spark open source. Il offre un framework de calcul Spark basé sur un système unifié de ressources de calcul et d'autorisations. Vous pouvez ainsi soumettre et exécuter des tâches Spark en utilisant des workflows de développement familiers, répondant à divers besoins de traitement et d'analyse des données. Dans DataWorks, utilisez le 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 permet le développement en Java, Scala et Python, et exécute les tâches en mode local ou en mode cluster. Lorsque vous exécutez une tâche hors ligne Spark on MaxCompute dans DataWorks, celle-ci s'exécute en mode cluster. Pour plus d'informations sur les modes d'exécution de Spark on MaxCompute, consultez la section Modes d'exécution.
Prérequis en matière d'autorisations
Pour développer des tâches, les utilisateurs RAM doivent être ajoutés à l'espace de travail correspondant et se voir attribuer le rôle Development ou Workspace Administrator . Le rôle Workspace Administrator inclut de nombreuses autorisations et doit être attribué avec prudence. Pour savoir comment ajouter un membre à un espace de travail, consultez la page Ajouter des membres à un espace de travail.
Si vous utilisez un compte Alibaba Cloud, vous pouvez ignorer cette étape.
Limites
Si vous rencontrez une erreur lors de la soumission d'un nœud MaxCompute Spark utilisant Spark 3.x, vous devez acheter et utiliser un groupe de ressources serverless. Pour plus d'informations, consultez la page Utiliser un groupe de ressources serverless.
Avant de commencer
Le nœud MaxCompute Spark prend en charge l'exécution de tâches hors ligne Spark on MaxCompute à l'aide de Java/Scala et de Python. Les étapes de développement et l'interface de configuration diffèrent selon le langage. Choisissez un langage en fonction de vos besoins métier.
Java/Scala
Avant d'exécuter du code Java ou Scala dans un nœud MaxCompute Spark, développez le code de la tâche Spark on MaxCompute localement, puis téléchargez-le en tant que ressource MaxCompute vers DataWorks. Procédez comme suit :
-
Configurez l'environnement de développement.
Préparez un environnement de développement pour l'exécution des tâches Spark on MaxCompute en fonction de votre système d'exploitation. Pour plus d'informations, consultez les pages Configurer un environnement de développement Linux et Configurer un environnement de développement Windows.
-
Développez le code Java/Scala.
Avant d'exécuter le code dans un nœud MaxCompute Spark, développez votre code Spark on MaxCompute localement ou dans un environnement existant. Nous vous recommandons d'utiliser le modèle de projet exemple fourni par Spark on MaxCompute.
-
Empaquetez le code et téléchargez-le vers DataWorks.
Une fois le développement terminé, empaquetez votre code et téléchargez-le vers DataWorks en tant que ressource MaxCompute. Pour plus d'informations, consultez la page Gestion des ressources.
Python with default environment
Vous pouvez développer des tâches PySpark dans DataWorks en écrivant du code directement dans une ressource Python. Vous pouvez ensuite soumettre et exécuter le code à l'aide d'un nœud MaxCompute Spark. Pour des exemples de développement, consultez la page Exemples de développement PySpark.
Si l'environnement par défaut ne répond pas aux exigences de dépendance de votre tâche, reportez-vous à la section Python (using a custom environment) pour préparer un environnement Python personnalisé. Vous pouvez également utiliser un nœud PyODPS 2 ou un nœud PyODPS 3, qui offrent une meilleure prise en charge des ressources Python.
Python with custom environment
Si l'environnement Python par défaut ne répond pas à vos besoins métier, suivez les étapes ci-dessous pour utiliser un environnement Python personnalisé afin d'exécuter votre tâche Spark on MaxCompute.
-
Préparez un environnement Python localement.
Reportez-vous à la page Versions Python PySpark et prise en charge des dépendances pour configurer l'environnement Python requis.
-
Empaquetez l'environnement et téléchargez-le vers DataWorks.
Compressez l'environnement Python dans un package .zip et téléchargez-le vers DataWorks en tant que ressource MaxCompute. Ce package devient l'environnement d'exécution de votre tâche Spark on MaxCompute.
Paramètres
DataWorks exécute les tâches hors ligne Spark on MaxCompute en mode Cluster. En mode Cluster, vous devez spécifier un point d'entrée de programme personnalisé main. La tâche Spark correspondante se termine lorsque la fonction main se termine avec un statut Success ou Fail. De plus, ajoutez les configurations du fichier spark-defaults.conf une par une aux configurations du nœud MaxCompute Spark. Cela inclut, par exemple, le nombre d'executor s, la taille de la mémoire et la configuration spark.hadoop.odps.runtime.end.point.
Vous n'avez pas besoin de télécharger le fichier spark-defaults.conf . Ajoutez plutôt les configurations contenues dans le fichier spark-defaults.conf une par une aux éléments de configuration d'un nœud MaxCompute Spark.
Java/Scala
|
Paramètre |
Description |
Commande spark-submit |
|
Spark Version |
La version de Spark. Valeurs valides : Spark 1.x, Spark 2.x et Spark 3.x. Remarque
Si vous rencontrez une erreur lors de la soumission d'un nœud MaxCompute Spark utilisant la version Spark 3.x, achetez et utilisez un groupe de ressources serverless. Pour plus d'informations, consultez la page Utiliser un groupe de ressources serverless. |
— |
|
Language |
Le langage de programmation. Sélectionnez Java/Scala ou Python en fonction du langage utilisé pour développer votre tâche Spark on MaxCompute. |
— |
|
Main JAR Resource |
Spécifie le fichier de ressource JAR principal pour la tâche. Le fichier de ressource doit être téléchargé vers DataWorks et validé. Pour plus d'informations, consultez la page Gestion des ressources. |
|
|
Configuration Item |
Spécifie les éléments de configuration pour la soumission de la tâche. Notez les points suivants :
|
|
|
Main Class |
Configurez le nom de la classe principale. Ce paramètre est requis lorsque le langage de développement est |
|
|
Parameter |
Ajoutez des paramètres selon vos besoins et séparez-les par un espace. DataWorks prend en charge les paramètres de planification. Le format du Parameter est Pour connaître les formats pris en charge des valeurs des paramètres de planification, consultez la page Sources et expressions des paramètres de planification. |
|
|
JAR Resources |
Cette option est prise en charge uniquement lorsque le langage de programmation est Les fichiers de ressource doivent être téléchargés vers DataWorks et validés. Pour plus d'informations, consultez la page Gestion des ressources. |
Commande de ressource :
|
|
File Resources |
Spécifie les ressources de fichier pour la tâche. |
|
|
Archive Resources |
Spécifie les ressources d'archive pour la tâche. Seules les archives .zip sont prises en charge. |
|
Python
|
Paramètre |
Description |
Commande spark-submit |
|
Spark Version |
La version de Spark. Valeurs valides : Spark 1.x, Spark 2.x et Spark 3.x. Remarque
Si vous rencontrez une erreur lors de la soumission d'un nœud MaxCompute Spark utilisant la version Spark 3.x, achetez et utilisez un groupe de ressources serverless. Pour plus d'informations, consultez la page Utiliser un groupe de ressources serverless. |
— |
|
Language |
Le langage de programmation. Sélectionnez Python en fonction du langage utilisé pour développer votre tâche Spark on MaxCompute. |
— |
|
Main Python Resource |
Spécifie le fichier de ressource Python principal pour la tâche. Le fichier de ressource doit être téléchargé vers DataWorks et validé. Pour plus d'informations, consultez la page Gestion des ressources. |
|
|
Configuration Item |
Spécifie les éléments de configuration pour la soumission de la tâche. Notez les points suivants :
|
|
|
Parameter |
Ajoutez des paramètres selon vos besoins, séparés par des espaces. DataWorks prend en charge les paramètres de planification, qui doivent être au format Pour connaître les formats pris en charge des valeurs des paramètres de planification, consultez la page Sources et expressions des paramètres de planification. |
|
|
Python Resources |
Cette option peut être utilisée uniquement lorsque le langage de développement est Les fichiers de ressource doivent être téléchargés vers DataWorks et validés. Pour plus d'informations, consultez la page Gestion des ressources. |
|
|
File Resources |
Spécifie les ressources de fichier pour la tâche. |
|
|
Archive Resources |
Spécifie les ressources d'archive pour la tâche. |
|
Procédure
-
Créez une ressource.
-
Dans la barre de navigation de gauche de la page Data Studio, recherchez Resource Management et cliquez sur Create. Créez une ressource Python de type MaxCompute Spark et nommez-la
spark_is_number.py. Pour plus d'informations, consultez la page Gestion des ressources. Le code est le 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')) Enregistrez la ressource.
-
Dans le nœud MaxCompute Spark créé, configurez les paramètres du nœud et les paramètres de planification. Pour plus d'informations, consultez la section Paramètres.
Pour exécuter la tâche selon une planification, configurez ses propriétés de planification en fonction de vos besoins métier. Pour plus d'informations, consultez la page Configuration de la planification des nœuds.
Une fois la tâche du nœud configurée, déployez le nœud. Pour plus d'informations, consultez la page Déployer des nœuds/workflows.
-
Après le déploiement de la tâche, accédez à Operation Center pour consulter l'état d'exécution de la tâche périodique. Pour plus d'informations, consultez la page Prise en main d'Operation Center.
RemarqueLes nœuds MaxCompute Spark ne disposent pas de point d'entrée d'exécution dans Data Studio. Vous devez exécuter les tâches Spark dans Operation Center, dans l'environnement de développement.
Une fois l'instance de remplissage des données exécutée avec succès, ouvrez l'URL de suivi dans le journal d'exécution de l'instance pour afficher le résultat.
Références
-
Pour plus d'informations sur le développement de tâches Spark on MaxCompute pour d'autres cas d'utilisation, consultez les rubriques suivantes :
FAQ Spark : Trouvez des solutions aux problèmes d'exécution courants de Spark pour accélérer le dépannage. Pour plus d'informations, consultez la page FAQ Spark.
Diagnostic des tâches Spark : MaxCompute fournit l'outil Logview et l'interface web Spark. Utilisez les journaux des tâches pour vérifier qu'une tâche est soumise et s'exécute correctement. Pour plus d'informations, consultez la page Diagnostic des tâches Spark.