Livy-Batch-APIs

Livy-Batch-API ist eine REST-Schnittstelle für die Übergabe von Spark-Batch-Jobs. Diese Schnittstelle ähnelt stark der Open-Source-Livy-REST-Schnittstelle (siehe Livy), mit Ausnahme einiger Einschränkungen, die im folgenden Abschnitt beschrieben werden.

Die Open-Source-API für Livy-Stapelprotokolle zum Abrufen von Protokollzeilen aus einem Stapeljob wird nicht unterstützt. Die Protokolle werden dem IBM Cloud Object Storage Bucket hinzugefügt, das als Serviceinstanz referenziert wurde "instance_home". Zu einem späteren Zeitpunkt während der Betaversion können die Protokolle an IBM Log Analysisweitergeleitet werden.

Ruft die Protokollzeilen aus diesem Stapel ab.

Spark-Batch-Jobs übergeben

Geben Sie Folgendes ein, um einen Spark-Batch-Job über die Livy-Batch-API zu übergeben:

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

Anforderungshauptteil für einen übergebenen Batch-Job mit der Livy-Batch-API:

Anforderungstext für Batchaufträge
Name Beschreibung Typ
file Datei mit der auszuführenden Anwendung Zeichenfolge (erforderlich)
className Java/Spark-Hauptklasse der Anwendung Zeichenfolge
args Befehlszeilenargumente für die Anwendung Liste der Zeichenfolgen
jars In dieser Sitzung zu verwendende JAR-Dateien Liste der Zeichenfolgen
pyFiles In dieser Sitzung zu verwendende Python -Dateien Liste der Zeichenfolgen
files In dieser Sitzung zu verwendende Dateien Liste der Zeichenfolgen
driverMemory Für den Treiberprozess zu verwendende Speicherkapazität Zeichenfolge
driverCores Anzahl der für den Treiberprozess zu verwendenden Kerne int
executorMemory Pro Executorprozess zu verwendende Speicherkapazität Zeichenfolge
executorCores Anzahl der Kerne, die für jeden Executor verwendet werden sollen int
numExecutors Anzahl der Steuerprogramme, die für diese Sitzung gestartet werden sollen int
name Der Name dieser Sitzung Zeichenfolge
conf Spark-Konfigurationseigenschaften Map von key=val

Die Eigenschaften proxyUser, archivesund queuewerden im Anforderungshauptteil nicht unterstützt, obwohl sie in der Open-Source-Livy-REST-Schnittstelle unterstützt werden.

Antworthauptteil eines übergebenen Batch-Jobs unter Verwendung der Livy-Batch-API:

Antworttext eines übermittelten Batch-Jobs
Name Beschreibung Typ
id Die Batch-ID int
appId Die ID der Spark-Anwendung Zeichenfolge
appInfo Detaillierte Anwendungsinformationen Map von key=val
state Status des übergebenen Batch-Jobs Zeichenfolge

Beispiele für die Verwendung der Livy-API

In den folgenden Abschnitten wird die Verwendung der Livy-APIs für Batches beschrieben.

Batch-Job mit Jobdatei in IBM Cloud Object Storage übergeben

Geben Sie Folgendes ein, um einen Batch-Job zu übergeben, bei dem sich die Jobdatei in einem IBM Cloud Object Storage -Bucket befindet:

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

Der Endpunkt für Ihre IBM Cloud Object Storage -Instanz in der JSON-Nutzdatendatei sollte der öffentliche Endpunkt sein.

Beispielnutzdaten:

{
  "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"
    }
}

Beispielantwort:

{"id":13,"app_info":{},"state":"not_started"}

Batch-Job mit Jobdatei auf lokaler Platte übergeben

Geben Sie Folgendes ein, um einen Batch-Job zu übergeben, bei dem sich die Jobdatei auf einer lokalen Festplatte befindet:

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

Beispielnutzdaten:

{
  "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"
}

Beispielantwort:

{"id":15,"app_info":{},"state":"not_started"}

Die Eigenschaft SparkUiUrlin der Antwort weist einen Wert ungleich null auf, wenn die Benutzerschnittstelle für die serverunabhängige Spark-Instanz verfügbar ist.

Details eines Jobs auflisten

Geben Sie Folgendes ein, um die Jobdetails für einen bestimmten Spark-Batch-Job aufzulisten:

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>

Der Antworthauptteil zum Auflisten der Jobdetails:

Antworttext zum Auflisten der Jobdetails
Name Beschreibung Typ
id Die Batch-ID int
appId Die ID der Spark-Anwendung Zeichenfolge
appInfo Detaillierte Anwendungsinformationen Map von key=val
state Status des übergebenen Batch-Jobs Zeichenfolge

Beispiel:

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"

Beispielantwort:

{
 "id": 14,
 "appId": "app-20201213175030-0000",
 "appInfo": {
   "sparkUiUrl": null
 },
 "state": "success"
}

Die Eigenschaft SparkUiUrlin der Antwort weist einen Wert ungleich null auf, wenn die Benutzerschnittstelle für die serverunabhängige Spark-Instanz verfügbar ist.

Jobstatus abrufen

Geben Sie Folgendes ein, um den Status Ihres übergebenen Jobs abzurufen:

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

Der Antworthauptteil zum Abrufen des Status des Batch-Jobs:

Antworttext zum Abrufen des Status eines Batchauftrags
Name Beschreibung Typ
id Die Batch-ID int
state Status des übergebenen Batch-Jobs Zeichenfolge

Beispiel:

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"

Beispielantwort:

{
	"id": 14,
	"state": "success"
}

Alle übergebenen Jobs auflisten

Geben Sie Folgendes ein, um alle übergebenen Spark-Batch-Jobs aufzulisten:

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

Die Eigenschaften fromund sizewerden im Anforderungshauptteil nicht unterstützt, obwohl sie in der Open-Source-Livy-REST-Schnittstelle unterstützt werden.

Der Antworthauptteil zum Auflisten aller übergebenen Spark-Batchjobs:

Antworttext zum Auflisten aller übermittelten Batchaufträge
Name Beschreibung Typ
from Der Startindex der Spark-Batch-Jobs, die abgerufen werden. int
total Die Gesamtzahl der Batch-Jobs, die zurückgezogen wurden. int
sessions Die Details für jeden Batch-Job in einer Sitzung Liste

Beispiel:

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"

Beispielantwort:

{
  "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
}

Die Eigenschaft SparkUiUrlin der Antwort weist einen Wert ungleich null auf, wenn die Benutzerschnittstelle für die serverunabhängige Spark-Instanz verfügbar ist.

Job löschen

Geben Sie Folgendes ein, um einen übergebenen Batch-Job zu löschen:

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>

Beispiel:

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"

Beispielantwort:

{
	"msg": "deleted"
}