Livy 일괄처리 API

Livy 일괄처리 API는 Spark 일괄처리 작업을 제출하기 위한 REST 인터페이스입니다. 이 인터페이스는 다음 주제에 설명된 몇 가지 제한사항을 제외하고 오픈 소스 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 이 세션에서 사용할 JARS 문자열 목록
pyFiles 이 세션에서 사용할 Python 파일 문자열 목록
files 이 세션에서 사용할 파일 문자열 목록
driverMemory 드라이버 프로세스에 사용할 메모리 양 문자열
driverCores 드라이버 프로세스에 사용할 코어 수 int
executorMemory 실행기 프로세스당 사용할 메모리 양 문자열
executorCores 각 실행기에 사용할 코어 수 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"}

서버리스 Spark 인스턴스에 UI를 사용할 수 있는 경우 응답의 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"
}

서버리스 Spark 인스턴스에 UI를 사용할 수 있는 경우 응답의 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
}

서버리스 Spark 인스턴스에 UI를 사용할 수 있는 경우 응답의 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"
}