IBM Cloud Docs
LivyバッチAPI

LivyバッチAPI

LivyバッチAPIは、Sparkバッチ・ジョブを実行依頼するためのRESTインターフェースです。 このインターフェースは、以下のトピックで説明するいくつかの制限を除いて、オープン・ソースのLivy RESTインターフェースに非常に似ています(Livyを参照)。

バッチ・ジョブからログ行を取得するためのオープン・ソース Livyバッチ・ログ APIはサポートされていません。 ログは、サービス・インスタンス"instance_home"として参照された IBM Cloud Object Storageバケットに追加されます。 ベータ版の後の段階で、ログをIBM Log Analysisに転送できます。

このバッチからログ行を取得します。

Sparkバッチ・ジョブのサブミット

Livy batches 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 ドライバー・プロセスに使用するコアの数 int
executorMemory executorプロセスごとに使用するメモリーの量 ストリング
executorCores 各executorに使用するコア数 int
numExecutors このセッションで起動する実行プログラムの数 int
name このセッションの名前 ストリング
conf Spark構成プロパティー key=valマップ

proxyUser, archivesおよびqueueプロパティーは、オープン・ソースのLivy RESTインターフェースでサポートされていますが、要求本体ではサポートされません。

LivyバッチAPIを使用した、実行依頼されたバッチ・ジョブの応答本体:

投入されたバッチジョブのレスポンスボディ
名前 説明 タイプ
id バッチID int
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"}

UIがサーバーレス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 int
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"
}

UIがサーバーレス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 int
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

fromプロパティーとsizeプロパティーは、オープン・ソースのLivy RESTインターフェースでサポートされていますが、要求本体ではサポートされません。

実行依頼されたすべてのSparkバッチ・ジョブをリストするための応答本体:

提出されたすべてのバッチ・ジョブを一覧表示するためのレスポンス・ボディ
名前 説明 タイプ
from 取得されるSparkバッチ・ジョブの索引開始 int
total リタイア済みのバッチ・ジョブの総数 int
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
}

UIがサーバーレス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"
}