Syntaxe, paramètres et codes de retour de l'API Spark Jobs

Vous soumettez généralement un travail Spark avec une commande cURL .

La syntaxe de la commande cURL du travail Spark est la suivante:

curl -k -X POST <V4_JOBS_API_ENDPOINT> -H "Authorization: ZenApiKey <TOKEN> -d @input.json

Remplacez les variables comme suit:

  • <V4_JOBS_API_ENDPOINT>: noeud final de l'instance que vous souhaitez utiliser pour soumettre votre travail Spark. Notez que plusieurs Analytics Engine Powered by Apache Spark instances peuvent exister sur le serveur IBM Cloud Pak for Data et que chaque instance a son propre point de terminaison pour soumettre des travaux. Pour obtenir le point de terminaison des tâches Spark de votre instance provisionnée, consultez la section « Gestion des instances d' Analytics Engine powered by Apache Spark ».
  • <TOKEN>: Pour obtenir le jeton d'accès pour votre instance de service, voir Génération d'un jeton d'autorisation d'API.
Remarque :

La méthode POST est renvoyée après la validation initiale de l'application. La demande de travail est traitée de manière asynchrone ; le SparkContext est d'abord créé, puis l'application est exécutée. Le statut en cours de l'application peut être extrait à l'aide de la méthode GET. Voir Statut du travail Spark.

Exemple de charge utile d'entrée pour une tâche de type « Python » :

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
    "arguments": [
      "/opt/ibm/spark/examples/src/main/resources/people.txt"
    ],
    "conf": {
      "spark.app.name": "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.driver.memory": "4G",
      "spark.driver.cores": 1,
      "spark.executor.memory": "4G",
      "spark.executor.cores": 1,
      "ae.spark.executor.count": 1
    },
    "env": {
      "SAMPLE_ENV_KEY": "SAMPLE_VALUE"
    }
  }
}

Exemple de charge d'entrée pour un travail R:

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/src/main/r/dataframe.R",
    "conf": {
      "spark.app.name": "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.driver.memory": "4G",
      "spark.driver.cores": 1,
      "spark.executor.memory": "4G",
      "spark.executor.cores": 1,
      "ae.spark.executor.count": 1
    },
    "env": {
      "SAMPLE_ENV_KEY": "SAMPLE_VALUE"
    }
  }
}

Exemple de charge utile d'entrée pour une tâche de type « Scala » :

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/jars/spark-examples*.jar",
    "arguments": [
      "1"
    ],
    "class": "org.apache.spark.examples.SparkPi",
    "conf": {
      "spark.app.name": "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.driver.memory": "4G",
      "spark.driver.cores": 1,
      "spark.executor.memory": "4G",
      "spark.executor.cores": 1,
      "ae.spark.executor.count": 1
    },
    "env": {
      "SAMPLE_ENV_KEY": "SAMPLE_VALUE"
    }
  }
}

La réponse renvoyée si votre tâche a été soumise avec succès :

{
  "application_id": "<application_id>",
  "state": "ACCEPTED"
}

Suggestion:

  • Sauvegardez la valeur renvoyée de "application_id" pour obtenir le statut du travail ou pour l'arrêter.
  • Sauvegardez la valeur renvoyée de "spark_application_id" pour surveiller et analyser l'application Spark sur le serveur d'historique Spark.

API de travail Spark utilisant un environnement d'exécution Spark personnalisé

Exemple de charge d'entrée pour la modification de la version d'exécution de Spark:

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
    "arguments": [
      "/opt/ibm/spark/examples/src/main/resources/people.txt"
    ],
    "runtime": {
      "spark_version": "3.4"
    }
  }
}

API Spark Job utilisant des packages personnalisés

Un exemple de charge utile d'entrée pour l'utilisation de packages personnalisés :

{
  "volumes": [
    {
      "name": "cpd-instance::myapp-vol",
      "mount_path": "/my-app"
    }
  ],
  "application_details": {
    "application": "/my-app/python-spark-pi.py",
    "packages":
      "org.apache.spark:spark-sql-kafka-0-10_2.12:3.4.0,org.apache.spark:spark-streaming-kafka-0-10_2.12:3.4.0",
    "conf": {
      "spark.app.name": "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.driver.cores": 4,
      "spark.driver.memory": "8G",
      "spark.executor.memory": "2G",
      "spark.executor.cores": 4,
      "ae.spark.driver.log.level": "ERROR",
      "ae.spark.executor.log.level": "WARN"
    }
  }
}

Paramètres de l'API Spark Jobs

Voici les paramètres que vous pouvez utiliser dans l'API des tâches Spark :

Tableau 1. Paramètres de l'API des travaux Spark
Nom Sous-propriétés Obligatoire/Facultatif Type Descriptif
Détails de l'application Obligatoire Objet Indique les détails de l'application Spark
la modernisation Obligatoire Chaîne Indique le fichier d'application Spark, c'est-à-dire le chemin d'accès au fichier de travail Python, R ou scala
Arguments Facultatif Chaîne [ ] Indique les arguments de l'application
conf Facultatif Objet JSON de type clé-valeur Spécifie les valeurs de configuration Spark qui remplacent les valeurs prédéfinies. Voir la section Paramètres de configuration et variables d'environnement Spark par défaut pour connaître les paramètres de configuration par défaut définis par le service Spark. Voir ConfigurationsApache Spark pour les paramètres de configuration pris en charge par Apache Spark.
env Facultatif Objet JSON de type clé-valeur Spécifie les variables d'environnement Spark requises pour le travail. Voir la section Paramètres de configuration et variables d'environnement Spark par défaut pour connaître les variables d'environnement par défaut définies par le service Spark. Voir Variables d'environnementApache Spark pour les variables d'environnement prises en charge par Apache Spark.
classe Facultatif Chaîne Spécifie le point d'entrée de votre application Scala.
options-pilote-java Facultatif Chaîne Indique des options Java supplémentaires à transmettre au pilote
chemin-bibliothèque-pilote Facultatif Chaîne Indique les entrées de chemin de bibliothèque supplémentaires à transmettre au pilote
chemin-classe-pilote Facultatif Chaîne Indique les entrées de chemin de classes supplémentaires à transmettre au pilote. Notez que les fichiers JAR ajoutés avec --jars sont automatiquement inclus dans le chemin d'accès aux classes.
bocaux Facultatif Chaîne Indique une liste de fichiers JAR séparés par des virgules à inclure dans les chemins d'accès aux classes du pilote et du programme d'exécution
packages Facultatif Chaîne Indique une liste séparée par des virgules des coordonnées Maven des fichiers JAR à inclure dans les chemins d'accès aux classes du pilote et du programme d'exécution. Effectue des recherches dans le référentiel Maven local, puis dans Maven central et enfin dans tous les référentiels distants supplémentaires fournis par --repositories. Le format des coordonnées doit être groupId:artifactId:version.
exclure-packages Facultatif Chaîne Indique une liste séparée par des virgules de groupId:artifactId à exclure lors de la résolution des dépendances fournies dans --packages afin d'éviter les conflits de dépendance
référentiels Facultatif Chaîne Spécifie une liste séparée par des virgules de référentiels distants supplémentaires à rechercher pour les coordonnées Maven fournies avec --packages
fichiers Python Facultatif Chaîne Indique une liste séparée par des virgules de fichiers .zip, .eggou .py à placer dans la variable PYTHONPATH pour les applications Python
runtime.spark_version Facultatif Chaîne Indique la version d'exécution Spark à utiliser pour le travail. IBM Cloud Pak for Data prend en charge l' 3.4 Spark.
volumes Facultatif liste d'objets Indique les volumes à monter autres que le volume d'instance Spark. Si des volumes sont ajoutés dans le contenu de l'application, la section conf du contenu est obligatoire.
Nom Obligatoire Chaîne Indique le nom du volume
chemin_sous-source Facultatif Chaîne Indique le chemin source dans le volume à monter. Le chemin source DOIT être un chemin relatif.
chemin_de_montage Obligatoire Chaîne Indique l'emplacement où le volume doit être monté. Notez qu'il existe quelques chemins de montage interdits que vous ne pourrez pas utiliser lorsque vous essaierez de les entrer car ils peuvent compromettre l'environnement d'exécution.

Les valeurs suivantes sont interdites pour mount_path : [/, /bin, /boot, /dev, /etc, /home, /lib, /lib64, /licenses, /lost+found, /media, /mnt, /opt, /proc, /root, /run, /sbin, /space_data, /project_data, /srv, /sys, /tmp, /usr, /var, /home/spark/shared,, /home/spark/spark-events,, /home/spark/space/assets,, /home/spark/project/assets]]

Codes de réponse

L'API des travaux Spark renvoie les codes de réponse suivants:

Codes de réponse de l'API de travail Spark
Code retour Signification du code de retour Descriptif
202 Travail accepté Le travail Spark a été validé et accepté pour la soumission de l'application.
400 Mauvaise demande Ce code d'erreur est renvoyé lorsque la charge utile est incorrecte, par exemple si son format n'est pas valide ou s'il manque des arguments.
404 Introuvable Cette valeur est renvoyée lorsque l'application Spark est soumise pour un ID d'instance qui n'existe pas.
500 Erreur de serveur interne Cette valeur est renvoyée lorsque le serveur ne répond pas à ce que vous lui demandez de faire. Essayez de renvoyer votre candidature.
503 Service indisponible Ce message s'affiche lorsque les ressources sont insuffisantes.
Réponse possible: Could not complete the request. Reason - FailedScheduling.

Paramètres de configuration et variables d'environnement Spark par défaut

Les tableaux suivants présentent les paramètres de configuration et les variables d'environnement de Spark couramment utilisés dans l' Analytics Engine powered by Apache Spark, ainsi que leurs valeurs par défaut.

Le tableau suivant répertorie les paramètres de configuration Spark et leurs valeurs par défaut:

Paramètres de configuration Spark par défaut
Configuration Spark Valeur par défaut
spark.eventLog.enabled exit utilisateur associé à une tâche
spark.executor.extraClassPath /home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/home/spark/shared/user-libs/spark2/*:/home/spark/user_home/dbdrivers/*:/home/spark/shared/user-libs/common/*:/home/spark/shared/user-libs/connectors/*:/opt/ibm/connectors/parquet-encryption/*:/opt/ibm/third-party/libs/spark2/*:/opt/ibm/third-party/libs/common/*:/opt/ibm/third-party/libs/connectors/*:/opt/ibm/spark/external-jars/*
spark.executer.memory 1 g
spark.executer.cores 1
(custom) ae.spark.executor.count 1
(custom) ae.spark.application.priority 1
spark.driver.extraClassPath /home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/home/spark/shared/user-libs/spark2/*:/home/spark/user_home/dbdrivers/*:/home/spark/shared/user-libs/common/*:/home/spark/shared/user-libs/connectors/*:/opt/ibm/connectors/parquet-encryption/*:/opt/ibm/third-party/libs/spark2/*:/opt/ibm/third-party/libs/common/*:/opt/ibm/third-party/libs/connectors/*:/opt/ibm/spark/external-jars/*
spark.driver.memory 1 024 Mo
spark.driver.cores 1
spark.local.dir /tmp/spark/scratch Voir le paramètre de configuration spark.local.dir pour plus de détails.
spark.master.ui.port 8080
spark.worker.ui.port 8081
spark.ui.port 4040
spark.history.ui.port 18080
spark.ui.enabled exit utilisateur associé à une tâche
spark.ui.killEnabled FALSE
spark.eventLog.dir file:///home/spark/spark-events
spark.ui.reverseProxy exit utilisateur associé à une tâche
spark.ui.showConsoleProgress exit utilisateur associé à une tâche
spark.shuffle.service.port 7337
spark.r.command /opt/ibm/conda/R/bin/Rscript
spark.hadoop.fs.s3a.fast.upload exit utilisateur associé à une tâche
spark.hadoop.fs.s3a.multipart.size 33554432
spark.hadoop.fs.stocator.scheme.list laitue romaine
spark.hadoop.fs.stocator.cos.scheme laitue romaine
spark.hadoop.fs.stocator.glob.bracket.support exit utilisateur associé à une tâche
spark.hadoop.fs.stocator.cos.impl com.ibm.stocator.fs.cos.COSAPIClient
spark.hadoop.fs.cos.impl com.ibm.stocator.fs.ObjectStoreFileSystem
spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem
spark.authenticate FALSE
spark.network.crypto.enabled FALSE
spark.network.crypto.keyLength 256

Le tableau suivant répertorie les variables d'environnement et leurs valeurs par défaut:

Variables d'environnement Spark par défaut
Variable d'environnement Valeur par défaut
SPARK_DIST_CLASSPATH /home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/opt/ibm/connectors/idax/*:/opt/ibm/connectors/cloudant/*:/opt/ibm/connectors/db2/*:/opt/ibm/connectors/others-db-drivers/*:/opt/ibm/connectors/wdp-connector-driver/*:/opt/ibm/connectors/wdp-connector-jdbc-library/*:/opt/ibm/connectors/stocator/*:/opt/ibm/connectors/s3/*:/opt/ibm/image-libs/common/*:/opt/ibm/image-libs/spark2/*:/opt/ibm/third-party/libs/batch/*:/opt/ibm/spark/external-jars/*
SPARK_LOCAL_DIRS /tmp/spark/scratch
SPARK_MASTER_WEBUI_PORT 8080
PORT_MAÎTRE_SPARK 7077
SPARK_WORKER_WEBUI_PORT 8081
CLASSPATH /home/spark/user_home/dbdrivers/*:/opt/ibm/connectors/idax/*:/opt/ibm/connectors/cloudant/*:/opt/ibm/connectors/db2/*:/opt/ibm/connectors/others-db-drivers/*:/opt/ibm/connectors/wdp-connector-driver/*:/opt/ibm/connectors/wdp-connector-jdbc-library/*:/opt/ibm/connectors/stocator/*:/opt/ibm/connectors/s3/*:/opt/ibm/image-libs/common/*:/opt/ibm/image-libs/spark2/*:/opt/ibm/third-party/libs/batch/*
LD_LIBRARY_PATH /opt/ibm/connectors/dsdriver/dsdriver/lib:/opt/ibm/connectors/others-db-drivers/oracle/lib:/opt/ibm/jdk/jre/lib/architecture/server:/opt/ibm/jdk/jre/lib/architecture/:/usr/local/lib:/lib64
ENV RUNTIME_PYTHON_ENV python310
CHEMIN D'ACCÈS AU POSTE DE TRAVAIL /home/spark/space/assets/data_asset:/home/spark/user_home/python-3:/cc-home/_global_/python-3:/home/spark/shared/user-libs/python:/home/spark/shared/conda/envs/python/lib/python/site-packages:/opt/ibm/conda/miniconda/lib/python/site-packages:/opt/ibm/third-party/libs/python3:/opt/ibm/image-libs/python3:/opt/ibm/image-libs/spark2/xskipper-core.jar:/opt/ibm/image-libs/spark2/spark-extensions.jar:/opt/ibm/image-libs/spark2/metaindexmanager.jar:/opt/ibm/image-libs/spark2/stmetaindexplugin.jar:/opt/ibm/spark/python:/opt/ibm/spark/python/lib/py4j-0.10.7-src.zip
Utilisateur_R_LIBS /home/spark/space/assets/data_asset:/home/spark/shared/user-libs/R:/opt/ibm/third-party/libs/R:/opt/ibm/conda/R/lib64/R/library/:/opt/ibm/spark/R/lib:/opt/ibm/image-libs/R