API de proceso por lotes de Livy
La API de proceso por lotes de Livy es una interfaz REST para enviar trabajos por lotes de Spark. Esta interfaz es muy similar a la interfaz REST de Livy de código abierto (consulte Livy), excepto por algunas limitaciones que se describen en el tema siguiente.
No se da admite la API de registro de lotes de Livy de código abierto para recuperar líneas de registro de un trabajo por lotes. Los registros se añaden al grupo de IBM Cloud Object Storage al que se ha hecho referencia como la instancia de servicio
"instance_home"
. En un momento posterior, durante el release beta, los registros se pueden reenviar a IBM Log Analysis.
Obtiene las líneas de registro de este lote.
Envío de trabajos por lotes de Spark
Para enviar un trabajo por lotes Spark utilizando la API de lotes Livy, especifique:
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
Cuerpo de solicitud para un trabajo de proceso por lotes enviado mediante la API de proceso por lotes de Livy:
Nombre | Descripción | Tipo |
---|---|---|
file |
Archivo que contiene la aplicación que se debe ejecutar | serie (necesaria) |
className |
Clase principal de aplicación de Java/Spark | string |
args |
Argumentos de línea de mandatos de la aplicación | lista de series |
jars |
jar que se van a utilizar en esta sesión | lista de series |
pyFiles |
Archivos Python que se van a utilizar en esta sesión | lista de series |
files |
archivos que se van a utilizar en esta sesión | lista de series |
driverMemory |
Cantidad de memoria que se debe utilizar para el proceso del controlador | string |
driverCores |
Número de núcleos que se van a utilizar para el proceso de controlador | int |
executorMemory |
Cantidad de memoria que se va a utilizar por proceso ejecutor | string |
executorCores |
Número de núcleos que se van a utilizar para cada ejecutor | int |
numExecutors |
Número de ejecutores que se van a lanzar para esta sesión | int |
name |
El nombre de esta sesión | string |
conf |
Propiedades de configuración de Spark | correlación de clave=val |
Las propiedades proxyUser
, archives
y queue
no se admiten en el cuerpo de la solicitud, aunque sí en la interfaz REST de Livy de código abierto.
Cuerpo de respuesta para un trabajo de proceso por lotes enviado mediante la API de proceso por lotes de Livy:
Nombre | Descripción | Tipo |
---|---|---|
id |
El ID de lote | int |
appId |
El ID de aplicación de Spark | string |
appInfo |
Información detallada sobre la aplicación | correlación de clave=val |
state |
Estado del trabajo por lotes enviado | string |
Ejemplos que utilizan la API de Livy
Las secciones siguientes muestran cómo utilizar las API de proceso por lotes de Livy.
Enviar un trabajo por lotes con el archivo de trabajo en IBM Cloud Object Storage
Para enviar un trabajo por lotes en el que se encuentra el archivo de trabajo en un grupo de IBM Cloud Object Storage, especifique:
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
El punto final de la instancia de IBM Cloud Object Storage en el archivo JSON de carga útil debe ser el punto final público.
Carga útil de ejemplo:
{
"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"
}
}
Respuesta de ejemplo:
{"id":13,"app_info":{},"state":"not_started"}
Enviar trabajo por lotes con el archivo de trabajo en disco local
Para enviar un trabajo por lotes en el que se encuentra el archivo de trabajo en un disco local, especifique:
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
Carga útil de ejemplo:
{
"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"
}
Respuesta de ejemplo:
{"id":15,"app_info":{},"state":"not_started"}
La propiedad SparkUiUrl
de la respuesta tendrá un valor no nulo cuando la interfaz de usuario esté disponible para la instancia de Spark sin servidor.
Listar los detalles de un trabajo
Para listar los detalles del trabajo para un determinado trabajo por lotes de Spark, especifique:
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>
El cuerpo de respuesta para listar los detalles del trabajo:
Nombre | Descripción | Tipo |
---|---|---|
id |
El ID de lote | int |
appId |
El ID de aplicación de Spark | string |
appInfo |
Información detallada sobre la aplicación | correlación de clave=val |
state |
Estado del trabajo por lotes enviado | string |
Un ejemplo
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"
Respuesta de ejemplo:
{
"id": 14,
"appId": "app-20201213175030-0000",
"appInfo": {
"sparkUiUrl": null
},
"state": "success"
}
La propiedad SparkUiUrl
de la respuesta tendrá un valor no nulo cuando la interfaz de usuario esté disponible para la instancia de Spark sin servidor.
Obtener estado de trabajo
Para obtener el estado del trabajo enviado, indique:
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
El cuerpo de respuesta para obtener el estado del trabajo por lotes:
Nombre | Descripción | Tipo |
---|---|---|
id |
El ID de lote | int |
state |
Estado del trabajo por lotes enviado | string |
Por ejemplo:
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"
Respuesta de ejemplo:
{
"id": 14,
"state": "success"
}
Listar todos los trabajos enviados
Para listar todos los trabajos por lotes de Spark enviados, indique:
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
Las propiedades from
y size
no se admiten en el cuerpo de la solicitud, aunque sí en la interfaz REST de Livy de código abierto.
El cuerpo de respuesta para listar todos los trabajos por lotes de Spark enviados:
Nombre | Descripción | Tipo |
---|---|---|
from |
El índice de inicio de los trabajos por lotes de Spark que se han recuperado | int |
total |
El número total de trabajos por lotes que se han recuperado | int |
sessions |
Los detalles de cada trabajo por lotes en una sesión | list |
Por ejemplo:
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"
Respuesta de ejemplo:
{
"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 propiedad SparkUiUrl
de la respuesta tendrá un valor no nulo cuando la interfaz de usuario esté disponible para la instancia de Spark sin servidor.
Suprimir un trabajo
Para suprimir un trabajo por lotes enviado, indique:
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>
Por ejemplo:
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"
Respuesta de ejemplo:
{
"msg": "deleted"
}