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 :
-
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.
-
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.
-
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.
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.
-
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.
-
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.
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. |
|
|
Configuration Item |
Les éléments de configuration requis pour soumettre la tâche Spark on MaxCompute.
|
|
|
Main Class |
Le nom de la classe principale. Ce paramètre est obligatoire lorsque le paramètre Language est défini sur |
|
|
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 . 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. |
|
|
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.
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 :
|
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.
-
Créez une ressource.
-
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')) Enregistrez et validez la ressource.
-
-
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.
| -
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).
RemarqueDataWorks 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.
-
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 :
Configuration de la planification : configurez les propriétés de planification périodique, telles que les paramètres de réexécution et les dépendances pour les tâches qui s'exécutent régulièrement. Présentation de la configuration de la planification des tâches.
Débogage des tâches : testez et exécutez le code du nœud pour vérifier sa logique. Processus de débogage des tâches.
Déploiement des tâches : déployez les nœuds pour les exécuter périodiquement en fonction de leurs configurations de planification. Déployer des tâches.
Activer le diagnostic des tâches Spark par le système : MaxCompute fournit l'outil Logview et l'interface utilisateur Web Spark. Vous pouvez consulter les journaux des tâches Spark pour vérifier si les tâches sont soumises et exécutées comme prévu.