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