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 介面中支援 proxyUserarchivesqueue 內容,但在要求內文中不受支援。

使用 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 介面中支援 fromsize 內容,但在要求內文中不受支援。

用於列出所有已提交 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"
}