Livy 批次 API
Livy 批次處理 API 是一個 REST 介面,用於提交 Spark 批次工作。 此介面非常類似於開放程式碼 Livy REST 介面 (請參閱 Livy),但下列主題中說明的一些限制除外。
不支援用於從批次工作擷取日誌行的開放程式碼 Livy 批次日誌 API。 日誌會新增至參照為服務實例 "instance_home" 的 IBM Cloud Object Storage 儲存區。 稍後在測試版期間,可以將日誌轉遞至 IBM Log Analysis。
從此批次取得日誌行。
提交 Spark 批次工作
若要使用 Livy 批次處理 API 來提交 Spark 批次工作,請輸入:
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
使用 Livy 批次處理 API 所提交批次工作的要求內文:
| 名稱 | 說明 | 類型 |
|---|---|---|
file |
包含要執行之應用程式的檔案 | 字串 (必要) |
className |
應用程式 Java/Spark 主要類別 | 字串 |
args |
應用程式的指令行引數 | 字串清單 |
jars |
要在此階段作業中使用的 JAR | 字串清單 |
pyFiles |
要在此階段作業中使用的 Python 檔案 | 字串清單 |
files |
要在此階段作業中使用的檔案 | 字串清單 |
driverMemory |
要用於驅動程式處理程序的記憶體數量 | 字串 |
driverCores |
用於驅動程式處理程序的核心數目 | 整數 |
executorMemory |
每個執行程式處理程序要使用的記憶體數量 | 字串 |
executorCores |
用於每一個執行程式的核心數目 | 整數 |
numExecutors |
為此階段作業啟動的執行程式數目 | 整數 |
name |
本次會議的名稱 | 字串 |
conf |
Spark 配置內容 | key=val 的對映 |
雖然在開放程式碼 Livy REST 介面中支援 proxyUser、archives 及 queue 內容,但在要求內文中不受支援。
使用 Livy 批次處理 API 所提交批次工作的回應內文:
| 名稱 | 說明 | 類型 |
|---|---|---|
id |
批次 ID | 整數 |
appId |
Spark 應用程式 ID | 字串 |
appInfo |
詳細應用程式資訊 | key=val 的對映 |
state |
已提交批次工作的狀態 | 字串 |
使用 Livy API 的範例
下列各節顯示如何使用 Livy 批次處理 API。
在 IBM Cloud Object Storage 中使用工作檔案提交批次工作
若要提交工作檔案位於 IBM Cloud Object Storage 儲存區中的批次工作,請輸入:
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
有效負載 JSON 檔案中 IBM Cloud Object Storage 實例的端點應該是公用端點。
範例有效負載:
{
"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"
}
}
範例回應:
{"id":13,"app_info":{},"state":"not_started"}
使用本端磁碟上的工作檔案提交批次工作
若要提交工作檔案位於本端磁碟上的批次工作,請輸入:
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
範例有效負載:
{
"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"
}
範例回應:
{"id":15,"app_info":{},"state":"not_started"}
當使用者介面可用於無伺服器 Spark 實例時,回應中的 SparkUiUrl 內容將具有非空值。
列出工作的詳細資料
若要列出特定 Spark 批次工作的工作詳細資料,請輸入:
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>
用於列出工作詳細資料的回應主體:
| 名稱 | 說明 | 類型 |
|---|---|---|
id |
批次 ID | 整數 |
appId |
Spark 應用程式 ID | 字串 |
appInfo |
詳細應用程式資訊 | key=val 的對映 |
state |
已提交批次工作的狀態 | 字串 |
範例:
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"
範例回應:
{
"id": 14,
"appId": "app-20201213175030-0000",
"appInfo": {
"sparkUiUrl": null
},
"state": "success"
}
當使用者介面可用於無伺服器 Spark 實例時,回應中的 SparkUiUrl 內容將具有非空值。
取得工作狀態
若要取得已提交工作的狀態,請輸入:
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
用於取得批次工作狀態的回應內文:
| 名稱 | 說明 | 類型 |
|---|---|---|
id |
批次 ID | 整數 |
state |
已提交批次工作的狀態 | 字串 |
例如:
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"
範例回應:
{
"id": 14,
"state": "success"
}
列出所有已提交的工作
若要列出所有已提交的 Spark 批次工作,請輸入:
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
雖然在開放程式碼 Livy REST 介面中支援 from 和 size 內容,但在要求內文中不受支援。
用於列出所有已提交 Spark 批次工作的回應主體:
| 名稱 | 說明 | 類型 |
|---|---|---|
from |
所擷取 Spark 批次工作的起始索引 | 整數 |
total |
重新分層的批次工作總數 | 整數 |
sessions |
階段作業中每一個批次工作的詳細資料 | 清單 |
例如:
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"
範例回應:
{
"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
}
當使用者介面可用於無伺服器 Spark 實例時,回應中的 SparkUiUrl 內容將具有非空值。
刪除工作
若要刪除已提交的批次工作,請輸入:
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>
例如:
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"
範例回應:
{
"msg": "deleted"
}