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.
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 :
| 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:
| 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:
| 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:
| 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 |