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:

Corpo della richiesta per lavori batch
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:

Corpo della risposta di un lavoro batch inviato
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:

Corpo della risposta per l'elenco dei 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:

Corpo di 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:

Corpo della risposta per elencare tutti i lavori batch inviati
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"
}