REST API 1.2

Databricks REST API를 사용 하면 웹 UI를 통하지 않고 프로그래밍 방식으로 Azure Databricks에 액세스할 수 있습니다.

이 문서에서는 REST API 1.2를 다룹니다. REST API 최신 버전 및 REST API 2.12.0도 사용할 수 있습니다.

중요

중요

Databricks REST API에 액세스하려면 인증해야 합니다.

REST API 사용 사례

  • 기존 프로덕션 시스템 또는 워크플로 시스템에서 트리거된 Apache Spark 작업을 시작합니다.
  • 특정 크기의 클러스터를 하루 중 정해진 시간에 프로그래밍 방식으로 가져온 다음, 야간에 종료합니다.

API 범주

  • 실행 컨텍스트: Spark 명령을 호출할 수 있는 고유한 변수 네임스페이스를 만듭니다.
  • 명령 실행: 특정 실행 컨텍스트 내에서 명령을 실행합니다.

세부 정보

  • 이 REST API는 HTTPS를 통해 실행됩니다.
  • 정보를 검색하려면 HTTP GET을 사용합니다.
  • 상태를 수정하려면 HTTP POST를 사용합니다.
  • 파일을 업로드하려면 multipart/form-data를 사용합니다. 그렇지 않으면 application/json을 사용합니다.
  • 응답 콘텐츠 형식이 JSON입니다.
  • 기본 인증은 모든 API 호출에 대해 사용자를 인증하는 데 사용됩니다.
  • 사용자 자격 증명은 base64로 인코딩되며 모든 API 호출의 HTTP 헤더에 있습니다. 예들 들어 Authorization: Basic YWRtaW46YWRtaW4=입니다. 를 사용 하 curl 는 경우 또는 파일에 사용자 자격 증명을 저장할 수 있습니다 .netrc .
  • Databricks REST API 사용에 대 한 자세한 내용은 Databricks REST API 참조를 참조 하세요.

시작

  • 이 문서의 예를 확인 하려면을 <databricks-instance> Azure Databricks 배포의 <databricks-instance> 로 바꿉니다.
  • 다음 예에서는 말아netrc 파일을 사용 합니다. curl원하는 프로그래밍 언어로 HTTP 라이브러리를 사용 하 여 이러한 예제를 적용할 수 있습니다.

API 참조

클러스터 목록 가져오기

메서드 및 경로:

GET /api/1.2/clusters/list

예제

요청:

curl --netrc --request GET \
  https://<databricks-instance>/api/1.2/clusters/list

응답:

[
  {
    "id": "1234-567890-span123",
    "name": "MyCluster",
    "status": "Terminated",
    "driverIp": "",
    "jdbcPort": 10000,
    "numWorkers":0
  },
  {
    "..."
  }
]

요청 스키마

없음

응답 스키마

각 개체가 다음과 같이 클러스터에 대 한 정보를 나타내는 개체의 배열입니다.

필드
id

형식: string

클러스터의 ID입니다.
name

형식: string

클러스터의 이름입니다.
status

형식: string

클러스터의 상태입니다. 다음 중 하나:

* Error
* Pending
* Reconfiguring
* Restarting
* Running
* Terminated
* Terminating
* Unknown
driverIp

형식: string

드라이버의 IP 주소입니다.
jdbcPort

형식: number

JDBC 포트 번호입니다.
numWorkers

형식: number

클러스터에 대 한 작업자 수입니다.

클러스터에 대 한 정보 가져오기

메서드 및 경로:

GET /api/1.2/clusters/status

예제

요청:

curl --netrc --get \
  https://<databricks-instance>/api/1.2/clusters/status \
  --data clusterId=1234-567890-span123

응답:

{
  "id": "1234-567890-span123",
  "name": "MyCluster",
  "status": "Terminated",
  "driverIp": "",
  "jdbcPort": 10000,
  "numWorkers": 0
}

요청 스키마

필드
clusterId

형식: string

클러스터의 ID입니다.

응답 스키마

클러스터에 대 한 정보를 나타내는 개체입니다.

필드
id

형식: string

클러스터의 ID입니다.
name

형식: string

클러스터의 이름입니다.
status

형식: string

클러스터의 상태입니다. 다음 중 하나:

* Error
* Pending
* Reconfiguring
* Restarting
* Running
* Terminated
* Terminating
* Unknown
driverIp

형식: string

드라이버의 IP 주소입니다.
jdbcPort

형식: number

JDBC 포트 번호입니다.
numWorkers

형식: number

클러스터의 작업자 수입니다.

클러스터 다시 시작

메서드 및 경로:

POST /api/1.2/clusters/restart

예제

요청:

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/clusters/restart \
  --data clusterId=1234-567890-span123

응답:

{
  "id": "1234-567890-span123"
}

요청 스키마

필드
clusterId

형식: string

다시 시작할 클러스터의 ID입니다.

응답 스키마

필드
id

형식: string

클러스터의 ID입니다.

실행 컨텍스트 만들기

메서드 및 경로:

POST /api/1.2/contexts/create

예제

요청:

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/contexts/create \
  --data clusterId=1234-567890-span123 \
  --data language=sql

응답:

{
  "id": "1234567890123456789"
}

요청 스키마

필드
clusterId

형식: string

컨텍스트를 만들 클러스터의 ID입니다.
clusterId

형식: string

컨텍스트의 언어입니다. 다음 중 하나:

* python
* scala
* sql

응답 스키마

필드
id

형식: string

실행 컨텍스트의 ID입니다.

실행 컨텍스트에 대한 정보 얻기

메서드 및 경로:

POST /api/1.2/contexts/status

예제

요청:

curl --netrc --get \
  https://<databricks-instance>/api/1.2/contexts/status \
  --data clusterId=1234-567890-span123 \
  --data contextId=1234567890123456789

응답:

{
  "id": "1234567890123456789",
  "status": "Running"
}

요청 스키마

필드
clusterId

형식: string

실행 컨텍스트 정보를 얻을 클러스터의 ID입니다.
contextId

형식: string

실행 컨텍스트의 ID입니다.

응답 스키마

필드
id

형식: string

실행 컨텍스트의 ID입니다.
status

형식: string

실행 컨텍스트의 상태입니다. 다음 중 하나:

* Error
* Pending
* Running

실행 컨텍스트 삭제

메서드 및 경로:

POST /api/1.2/contexts/destroy

예제

요청:

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/contexts/destroy \
  --data clusterId=1234-567890-span123 \
  --data contextId=1234567890123456789

응답:

{
  "id": "1234567890123456789"
}

요청 스키마

필드
clusterId

형식: string

실행 컨텍스트를 삭제할 클러스터의 ID입니다.
contextId

형식: string

삭제할 실행 컨텍스트의 ID입니다.

응답 스키마

필드
id

형식: string

실행 컨텍스트의 ID입니다.

명령 실행

메서드 및 경로:

POST /api/1.2/commands/execute

예제

요청:

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/commands/execute \
  --header 'Content-Type: application/json' \
  --data @execute-command.json

execute-command.json:

{
   "clusterId": "1234-567890-span123",
   "contextId": "1234567890123456789",
   "language": "python",
   "command": "print('Hello, World!')"
}

응답:

{
  "id": "1234ab56-7890-1cde-234f-5abcdef67890"
}

요청 스키마

필드
clusterId

형식: string

명령을 실행할 클러스터의 ID입니다.
contextId

형식: string

명령을 실행할 실행 컨텍스트의 ID입니다.
언어

형식: string

명령의 언어입니다.
command

형식: string

실행할 명령 문자열입니다.

또는 명령을 지정합니다.
commandFile.
commandFile

형식: string

실행할 명령을 포함하는 파일의 경로입니다.

commandFile 또는 를 지정합니다.
명령.
options

형식: string

다운스트림에 사용되는 값의 선택적 맵입니다. 예를 들어 displayRowLimit 재정의(테스트에 사용)입니다.

응답 스키마

필드
id

형식: string

명령의 ID입니다.

명령에 대한 정보 얻기

메서드 및 경로:

GET /api/1.2/commands/status

예제

요청:

curl --netrc --get \
  https://<databricks-instance>/api/1.2/commands/status \
  --data clusterId=1234-567890-span123 \
  --data contextId=1234567890123456789 \
  --data commandId=1234ab56-7890-1cde-234f-5abcdef67890

응답:

{
  "id": "1234ab56-7890-1cde-234f-5abcdef67890",
  "status": "Finished",
  "results": {
    "resultType": "text",
    "data": "Hello, World!"
  }
}

요청 스키마

필드
clusterId

형식: string

명령 정보를 얻을 클러스터의 ID입니다.
contextId

형식: string

명령과 연결된 실행 컨텍스트의 ID입니다.
Commandid

형식: string

정보를 얻을 명령의 ID입니다.

응답 스키마

필드
id

형식: string

명령의 ID입니다.
status

형식: string

명령의 상태입니다. 다음 중 하나:

* Cancelled
* Cancelling
* Error
* Finished
* Queued
* Running
결과

형식: object

명령의 결과입니다.

* resultType: 결과의 형식입니다. 유형: string 다음 중 하나:

* error
* image
* images
* table
* text

error의 경우:

* cause: 오류의 원인입니다. 형식: string

image의 경우:

* fileName: 이미지 파일 이름입니다. 형식: string

images의 경우:

* fileNames: 이미지의 파일 이름입니다. 유형: array of string

table의 경우:

* data: 테이블 데이터입니다. 유형: arrayarrayany

* schema: 테이블 스키마입니다. 유형: arrayarray(string, any)

* truncated: true 부분 결과가 반환되면 입니다. 형식: true/false

* isJsonSchema: true Hive 형식의 문자열 표현 대신 JSON 스키마가 반환되면 입니다. 형식: true/false

text의 경우:

* data: 텍스트입니다. 형식: string

명령 취소

메서드 및 경로:

POST/api/1.2/commands/cancel

예제

요청:

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/commands/cancel \
  --data clusterId=1234-567890-span123 \
  --data contextId=1234567890123456789 \
  --data commandId=1234ab56-7890-1cde-234f-5abcdef67890

응답:

{
  "id": "1234ab56-7890-1cde-234f-5abcdef67890"
}

요청 스키마

필드
clusterId

형식: string

취소할 명령과 연결된 클러스터의 ID입니다.
contextId

형식: string

취소할 명령과 연결된 실행 컨텍스트의 ID입니다.
Commandid

형식: string

취소할 명령의 ID입니다.

응답 스키마

필드
id

형식: string

명령의 ID입니다.

클러스터에 대한 라이브러리 목록 얻기

중요

이 작업은 더 이상 사용되지 않습니다. 대신 라이브러리 API에서 클러스터 상태 작업을 사용합니다.

메서드 및 경로:

GET /api/1.2/libraries/list

예제

요청:

curl --netrc --get \
  https://<databricks-instance>/api/1.2/libraries/list \
  --data clusterId=1234-567890-span123

요청 스키마

필드
clusterId

형식: string

클러스터의 ID입니다.

응답 스키마

다음과 같이 라이브러리에 대한 정보를 나타내는 각 개체가 있는 개체의 배열입니다.

필드
name

형식: string

라이브러리의 이름입니다.
status

형식: string

라이브러리의 상태입니다. 다음 중 하나:

* LibraryError
* LibraryLoaded
* LibraryPending

클러스터에 라이브러리 업로드

중요

이 작업은 더 이상 사용되지 않습니다. 라이브러리 API에서 설치 작업을 대신 사용합니다.

메서드 및 경로:

POST /api/1.2/libraries/upload

요청 스키마

필드
clusterId

형식: string

라이브러리를 업로드할 클러스터의 ID입니다.
name

형식: string

라이브러리의 이름입니다.
언어

형식: string

라이브러리의 언어입니다.
uri

형식: string

라이브러리의 URI입니다.

구성표는 file , 또는 일 수 있습니다. http
https.

응답 스키마

업로드된 라이브러리에 대한 정보입니다.

필드
언어

형식: string

라이브러리의 언어입니다.
uri

형식: string

라이브러리의 URI입니다.

추가 예

다음 추가 예제에서는 curl 선택한 프로그래밍 언어로 HTTP 라이브러리와 함께 사용하거나 적용할 수 있는 명령을 제공합니다.

실행 컨텍스트 만들기

지정된 프로그래밍 언어에 대해 지정된 클러스터에 실행 컨텍스트를 만듭니다.

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/contexts/create \
  --header 'Content-Type: application/json' \
  --data '{ "language": "scala", "clusterId": "1234-567890-span123" }'

실행 컨텍스트에 대한 정보를 얻습니다.

curl --netrc --get \
  https://<databricks-instance>/api/1.2/contexts/status \
  --data 'clusterId=1234-567890-span123&contextId=1234567890123456789'

실행 컨텍스트를 삭제합니다.

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/contexts/destroy \
  --header 'Content-Type: application/json' \
  --data '{ "contextId": "1234567890123456789", "clusterId": "1234-567890-span123" }'

명령 실행

알려진 제한 사항: 명령 실행은 %run을 지원하지 않습니다.

명령 문자열을 실행합니다.

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/commands/execute \
  --header 'Content-Type: application/json' \
  --data '{ "language": "scala", "clusterId": "1234-567890-span123", "contextId": "1234567890123456789", "command": "sc.parallelize(1 to 10).collect" }'

파일 실행:

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/commands/execute \
  --header 'Content-Type: multipart/form-data' \
  --form language=python \
  --form clusterId=1234-567890-span123 \
  --form contextId=1234567890123456789 \
  --form command=@myfile.py

명령의 상태 및 결과를 표시합니다.

curl --netrc --get \
  https://<databricks-instance>/api/1.2/commands/status \
  --data 'clusterId=1234-567890-span123&contextId=1234567890123456789&commandId=1234ab56-7890-1cde-234f-5abcdef67890'

명령을 취소합니다.

curl --netrc --request POST \
  https://<databricks-instance>/api/1.2/commands/cancel \
  --data 'clusterId=1234-567890-span123&contextId=1234567890123456789&commandId=1234ab56-7890-1cde-234f-5abcdef67890' \

Spark JAR 업로드 및 실행

JAR 업로드

REST API(최신)를 사용하여 JAR을 업로드하고 클러스터에 연결합니다.

JAR 실행

  1. 실행 컨텍스트를 만듭니다.

    curl --netrc --request POST \
      https://<databricks-instance>/api/1.2/contexts/create \
      --data "language=scala&clusterId=1234-567890-span123"
    
    {
      "id": "1234567890123456789"
    }
    
  2. JAR을 사용하는 명령을 실행합니다.

    curl --netrc --request POST \
      https://<databricks-instance>/api/1.2/commands/execute \
      --data 'language=scala&clusterId=1234-567890-span123&contextId=1234567890123456789&command=println(com.databricks.apps.logs.chapter1.LogAnalyzer.processLogFile(sc,null,"dbfs:/somefile.log"))'
    
    {
      "id": "1234ab56-7890-1cde-234f-5abcdef67890"
    }
    
  3. 명령의 상태를 확인합니다. 시간이 오래 걸리는 Spark 작업을 실행하는 경우 즉시 반환되지 않을 수 있습니다.

    curl --netrc 'https://<databricks-instance>/api/1.2/commands/status?clusterId=1234-567890-span123&contextId=1234567890123456789&commandId=1234ab56-7890-1cde-234f-5abcdef67890'
    
    {
       "id": "1234ab56-7890-1cde-234f-5abcdef67890",
       "results": {
         "data": "Content Size Avg: 1234, Min: 1234, Max: 1234",
         "resultType": "text"
       },
       "status": "Finished"
    }
    

    resultType에 허용되는 값은 다음과 같습니다.

    • error
    • image
    • images
    • table
    • text