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