API batch Livy
L'API dei batch Livy è un'interfaccia REST per l'inoltro dei lavori batch Spark. Questa interfaccia è molto simile all'interfaccia REST Livy open source (vedere Livy) ad eccezione di alcune limitazioni descritte nel seguente argomento.
L'API di log batch Livy open source per richiamare le righe di log da un lavoro batch non è supportato. I log vengono aggiunti al bucket IBM Cloud Object Storage a cui si fa riferimento come istanza del servizio "instance_home".
In un secondo momento, durante la release beta, i log possono essere inoltrati a IBM Log Analysis.
Richiama le righe di log da questo batch.
Inoltro di lavori batch Spark
Per inoltrare un lavoro batch Spark utilizzando l'API dei batch Livy, immetti:
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
Corpo della richiesta per un lavoro batch inoltrato utilizzando l'API batch Livy:
| Nome | Descrizione | Immettere |
|---|---|---|
file |
File contenente l'applicazione da eseguire | stringa (obbligatorio) |
className |
Classe principale Java/Spark dell'applicazione | stringa |
args |
Argomenti della riga comandi per l'applicazione | elenco di stringhe |
jars |
vasi da utilizzare in questa sessione | elenco di stringhe |
pyFiles |
File Python da utilizzare in questa sessione | elenco di stringhe |
files |
file da utilizzare in questa sessione | elenco di stringhe |
driverMemory |
Quantità di memoria da utilizzare per il processo del driver | stringa |
driverCores |
Numero di core da utilizzare per il processo del driver | int |
executorMemory |
Quantità di memoria da utilizzare per ogni processo di esecuzione | stringa |
executorCores |
Numero di core da utilizzare per ogni esecutore | int |
numExecutors |
Numero di esecutori da avviare per questa sessione | int |
name |
Il nome di questa sessione | stringa |
conf |
Proprietà di configurazione Spark | mappa di chiave=val |
Le proprietà proxyUser, archives e queue non sono supportate nel corpo della richiesta sebbene siano supportate nell'interfaccia REST Livy open source.
Corpo della risposta di un lavoro batch inoltrato utilizzando l'API batch Livy:
| Nome | Descrizione | Immettere |
|---|---|---|
id |
L'ID batch | int |
appId |
L'ID applicazione Spark | stringa |
appInfo |
Informazioni dettagliate sull'applicazione | mappa di chiave=val |
state |
Stato del lavoro batch inoltrato | stringa |
Esempi che utilizzano l'API Livy
Le seguenti sezioni ti mostrano come utilizzare le API batch Livy.
Inoltrare un lavoro batch con il file di lavoro in IBM Cloud Object Storage
Per inoltrare un lavoro batch in cui il file di lavoro si trova in un bucket IBM Cloud Object Storage, immetti:
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
L'endpoint per la tua istanza IBM Cloud Object Storage nel file JSON del payload deve essere l'endpoint pubblico.
Payload di esempio:
{
"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"
}
}
Risposta di esempio:
{"id":13,"app_info":{},"state":"not_started"}
Inoltrare il lavoro batch con il file di lavoro sul disco locale
Per inoltrare un lavoro batch in cui il file di lavoro si trova su un disco locale, immettere:
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
Payload di esempio:
{
"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"
}
Risposta di esempio:
{"id":15,"app_info":{},"state":"not_started"}
La proprietà SparkUiUrl in risposta avrà un valore non null quando l'IU è disponibile per l'istanza Spark senza server.
Elencare i dettagli di un lavoro
Per elencare i dettagli del lavoro per un particolare lavoro batch Spark, immettere:
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>
Il corpo della risposta per elencare i dettagli del lavoro:
| Nome | Descrizione | Immettere |
|---|---|---|
id |
L'ID batch | int |
appId |
L'ID applicazione Spark | stringa |
appInfo |
Informazioni dettagliate sull'applicazione | mappa di chiave=val |
state |
Stato del lavoro batch inoltrato | stringa |
Un esempio:
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"
Risposta di esempio:
{
"id": 14,
"appId": "app-20201213175030-0000",
"appInfo": {
"sparkUiUrl": null
},
"state": "success"
}
La proprietà SparkUiUrl in risposta avrà un valore non null quando l'IU è disponibile per l'istanza Spark senza server.
Ottieni stato lavoro
Per ottenere lo stato del lavoro inoltrato, immettere:
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
Il corpo della risposta per ottenere lo stato del lavoro batch:
| Nome | Descrizione | Immettere |
|---|---|---|
id |
L'ID batch | int |
state |
Stato del lavoro batch inoltrato | stringa |
Ad esempio:
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"
Risposta di esempio:
{
"id": 14,
"state": "success"
}
Elenca tutti i lavori inoltrati
Per elencare tutti i lavori batch Spark inoltrati, immettere:
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
Le proprietà from e size non sono supportate nel corpo della richiesta sebbene siano supportate nell'interfaccia REST Livy open source.
Il corpo della risposta per elencare tutti i lavori batch Spark inoltrati:
| Nome | Descrizione | Immettere |
|---|---|---|
from |
L'indice iniziale dei lavori batch Spark richiamati | int |
total |
Il numero totale di lavori batch ritirati | int |
sessions |
I dettagli per ogni lavoro batch in una sessione | elenco |
Ad esempio:
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"
Risposta di esempio:
{
"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 proprietà SparkUiUrl in risposta avrà un valore non null quando l'IU è disponibile per l'istanza Spark senza server.
Elimina un lavoro
Per eliminare un lavoro batch inoltrato, immettere:
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>
Ad esempio:
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"
Risposta di esempio:
{
"msg": "deleted"
}