IBM Cloud Docs
API de traitement par lots Livy

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 :

Tableau 1. Corps de demande pour les travaux par lots
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 :

Tableau 2. Corps de réponse d'un travail par lots soumis
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 :

Tableau 3. Corps de réponse pour l'affichage de la liste des détails de 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 :

Tableau 4. Corps de réponse pour l'obtention de 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 :

Tableau 5. Corps de réponse pour la liste de tous les travaux par lots 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"
}