API de traitement par lots Livy
L'API de traitement par lots Livy est une interface REST permettant de soumettre des travaux par lots Spark. Cette interface est très similaire à l'interface de Livy REST open source (voir Livy), sauf pour quelques limitations décrites dans la rubrique suivante.
L'API de journal des lots Livy open source permettant d'extraire des lignes de journal à partir d'un travail par lots n'est pas prise en charge. Les journaux sont ajoutés au compartiment IBM Cloud Object Storage qui a été référencé en tant qu'instance
de service "instance_home"
. Plus tard, lors de la version bêta, les journaux peuvent être transmis à IBM Log Analysis.
Extrait les lignes de journal de ce lot.
Soumission de travaux par lots Spark
Pour soumettre un travail par lot Spark en utilisant l'API batches de Livy, entrez :
curl \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-d '{ "file": "/ cos://<application-bucket-name>.<cos-reference-name>/my_spark_application.py"
", \
"conf": { \
"spark.hadoop.fs.cos.<cos-reference-name>.endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud", \
"spark.hadoop.fs.cos.<cos-reference-name>.access.key": "<access_key>", \
"spark.hadoop.fs.cos.<cos-reference-name>.secret.key": "<secret_key>", \
"spark.app.name": "MySparkApp" \
} \
}' \
-X POST https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/<instance-id>/livy/batches
Corps de la demande d'un travail par lots soumis à l'aide de l'API de traitement par lots Livy :
Nom | Description | Type |
---|---|---|
file |
Fichier contenant l'application à exécuter | chaîne (obligatoire) |
className |
Classe principale Java/Spark de l'application | chaîne |
args |
Arguments de ligne de commande pour l'application | liste de chaînes |
jars |
Fichiers JAR à utiliser dans cette session | liste de chaînes |
pyFiles |
Fichiers Python à utiliser dans cette session | liste de chaînes |
files |
Fichiers à utiliser dans cette session | liste de chaînes |
driverMemory |
Quantité de mémoire à utiliser pour le processus de pilote | chaîne |
driverCores |
Nombre de cœurs à utiliser pour le processus de pilote | int |
executorMemory |
Quantité de mémoire à utiliser par processus d'exécuteur | chaîne |
executorCores |
Nombre de cœurs à utiliser pour chaque exécuteur | int |
numExecutors |
Nombre d'exécuteurs à lancer pour cette session | int |
name |
Nom de cette session | chaîne |
conf |
Propriétés de configuration Spark | map of key=val |
Les propriétés proxyUser
, archives
et queue
ne sont pas prises en charge dans le corps de la demande, bien qu'elles soient prises en charge dans l'interface open source Livy REST.
Corps de réponse d'un travail par lots soumis à l'aide de l'API de travaux par lots Livy :
Nom | Description | Type |
---|---|---|
id |
ID de lot | int |
appId |
ID d'application Spark | chaîne |
appInfo |
Informations détaillées d'application | map of key=val |
state |
État du travail par lots soumis | chaîne |
Exemples d'utilisation de l'API Livy
Les sections suivantes vous indiquent comment utiliser les API de traitement par lots Livy.
Soumettez un travail par lots avec le fichier de travail dans IBM Cloud Object Storage
Pour soumettre un travail par lots dans lequel le fichier de travail se trouve dans un compartiment IBM Cloud Object Storage, entrez :
curl -i -X POST https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/<instance-id>/livy/batches -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN" -d @livypayload.json
Le point de terminaison de votre instance IBM Cloud Object Storage dans le fichier JSON de contenu doit être le point de terminaison public.
Exemple de contenu :
{
"file": "cos://<bucket>.mycos/wordcount.py",
"className": "org.apache.spark.deploy.SparkSubmit",
"args": ["/opt/ibm/spark/examples/src/main/resources/people.txt"],
"conf": {
"spark.hadoop.fs.cos.mycos.endpoint": "https://s3.direct.us-south.cloud-object-storage.appdomain.cloud",
"spark.hadoop.fs.cos.mycos.access.key": "XXXX",
"spark.hadoop.fs.cos.mycos.secret.key": "XXXX",
"spark.app.name": "MySparkApp"
}
}
Exemple de réponse :
{"id":13,"app_info":{},"state":"not_started"}
Soumettre un travail par lots avec un fichier de travail sur le disque local
Pour soumettre un travail par lots dans lequel le fichier de travail se trouve sur un disque local, entrez :
curl -i -X POST https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/<instance-id>/livy/batches -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN" -d @livypayload.json
Exemple de contenu :
{
"file": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
"args": ["/opt/ibm/spark/examples/src/main/resources/people.txt"],
"className": "org.apache.spark.deploy.SparkSubmit"
}
Exemple de réponse :
{"id":15,"app_info":{},"state":"not_started"}
La propriété SparkUiUrl
dans la réponse a une valeur non null lorsque l'interface utilisateur est disponible pour l'instance de Spark sans serveur.
Liste des détails d'un travail
Pour répertorier les détails d'un travail par lots Spark, entrez :
curl \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-X GET https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/<instance-id>/livy/batches/<batch-id>
Corps de réponse pour la liste des détails du travail :
Nom | Description | Type |
---|---|---|
id |
ID de lot | int |
appId |
ID d'application Spark | chaîne |
appInfo |
Informations détaillées d'application | map of key=val |
state |
État du travail par lots soumis | chaîne |
Exemple :
curl -i -X GET https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/43f79a18-768c-44c9-b9c2-b19ec78771bf/livy/batches/14 -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN"
Exemple de réponse :
{
"id": 14,
"appId": "app-20201213175030-0000",
"appInfo": {
"sparkUiUrl": null
},
"state": "success"
}
La propriété SparkUiUrl
dans la réponse a une valeur non null lorsque l'interface utilisateur est disponible pour l'instance de Spark sans serveur.
Obtenir l'état du travail
Pour obtenir l'état de votre travail soumis, entrez :
curl \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-X GET https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/<instance-id>/livy/batches/<batch-id>/state
Corps de réponse permettant d'obtenir l'état du travail par lots :
Nom | Description | Type |
---|---|---|
id |
ID de lot | int |
state |
État du travail par lots soumis | chaîne |
Exemple :
curl -i -X GET https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/43f79a18-768c-44c9-b9c2-b19ec78771bf/livy/batches/14/state -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN"
Exemple de réponse :
{
"id": 14,
"state": "success"
}
Liste de tous les travaux soumis
Pour répertorier tous les travaux par lots Spark soumis, entrez :
curl \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-X GET https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/<instance-id>/livy/batches
Les propriétés from
et size
ne sont pas prises en charge dans le corps de la demande, bien qu'elles soient prises en charge dans l'interface open source Livy REST.
Corps de réponse pour la liste de tous les travaux par lots Spark soumis :
Nom | Description | Type |
---|---|---|
from |
L'index de début des travaux par lots Spark qui sont extraits | int |
total |
Nombre total de travaux par lots qui sont extraits | int |
sessions |
Détails de chaque travail par lots d'une session | list |
Exemple :
curl -i -X GET https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/43f79a18-768c-44c9-b9c2-b19ec78771bf/livy/batches -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN"
Exemple de réponse :
{
"from": 0,
"sessions": [{
"id": 13,
"appId": "app-20201203115111-0000",
"appInfo": {
"sparkUiUrl": null
},
"state": "success"
},
{
"id": 14,
"appId": "app-20201213175030-0000",
"appInfo": {
"sparkUiUrl": null
},
"state": "success"
}],
"total": 2
}
La propriété SparkUiUrl
dans la réponse a une valeur non null lorsque l'interface utilisateur est disponible pour l'instance de Spark sans serveur.
Supprimer un travail
Pour supprimer un travail par lots soumis, entrez :
curl \
-H 'Authorization: Bearer <TOKEN>' \
-H 'Content-Type: application/json' \
-X DELETE https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/<instance-id>/livy/batches/<batch-id>
Exemple :
curl -i -X DELETE https://api.us-south.ae.cloud.ibm.com/v3/analytics_engines/43f79a18-768c-44c9-b9c2-b19ec78771bf/livy/batches/14 -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN"
Exemple de réponse :
{
"msg": "deleted"
}