IBM Cloud Docs
API de proceso por lotes de Livy

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:

Tabla 1. Cuerpo de solicitud para trabajos por lotes
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:

Tabla 2. Cuerpo de respuesta de un trabajo por lotes enviado
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:

Tabla 3. Cuerpo de respuesta para listar detalles de 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:

Tabla 4. 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:

Tabla 5. Cuerpo de respuesta para listar todos los trabajos por lotes 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"
}