Вызов записной книжки databricks с использованием API-интерфейса заданий Databricks run-submit endpoint - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь установить лямбда-функцию AWS, которая вызывает записную книжку блоков данных (в случае триггера s3). Я понимаю, что для создания POST необходимо использовать API-интерфейс Jobs API в коде лямбда-функции (python) запрос с использованием полезной нагрузки JSON функции run-submit.

Хотя документация не очень понятна, я смог вызвать тестовый сценарий, и при проверке текста ответа я вижу HTML-код страницы входа в систему блоков данных, что означает, что он не проходит проверку подлинности.

Я читал токены пользователей, но я не уверен, как даже включить их для аутентификации.

Будет полезна любая помощь в выполнении этой работы другими способами или помощь мне в использовании user_tokens для аутентификации, чтобы поток достигал выполнения записной книжки, а не останавливался на странице аутентификации.

Заранее спасибо.

Пример кода:

import requests
import json

job_payload = {
  "run_name": 'just_a_run',
  "existing_cluster_id": '****',
  "notebook_task": 
    {
      "notebook_path": 'https://databricks.cloud.company.com/****'
    }
}

resp = requests.post('https://databricks.cloud.company.com/2.0/jobs/runs/submit', json=job_payload)
print(resp.status_code)
print(resp.text)

200


<!DOCTYPE html>

<html>
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="Content-Language" content="en"/>
    <title>Databricks - Sign In</title>
    <meta name="viewport" content="width=960">
    <link rel="stylesheet" href="/login/bootstrap.min.css">
    <link rel="icon" type="image/png" href="login/favicon.ico" />

    <meta http-equiv="content-type" content="text/html; charset=UTF8">
<link rel="shortcut icon" href="favicon.ico"><link href="login/login.e555bb48.css" rel="stylesheet"></head>
<body>
<div id="login-page"></div>
<script type="text/javascript" src="login/login.dabd48fd.js"></script></body>
</html>

1 Ответ

0 голосов
/ 15 мая 2019

решено:

1) Вам потребуется создать токен пользователя для авторизации и отправить его в качестве параметра 'headers' при выполнении запроса REST.

2) headers = {'Authorization':' Token-token '} Вместо токена должен быть ваш текущий токен, который вы получаете из блоков данных.

3) Ссылка на api должна начинаться с / api

4) Путь к блоку данныхзаписная книжка должна иметь абсолютный путь, т.е. "/ Users / $ USER_NAME / book_name"

Окончательный рабочий код:

import requests
import json

job_payload = {
  "run_name": 'just_a_run',
  "existing_cluster_id": 'id_of_cluster',
  "notebook_task": 
    {
      "notebook_path": '/Users/username/notebook_name'
    }
}

resp = requests.post('https://databricks.cloud.company.com/api/2.0/jobs/runs/submit', json=job_payload, headers={'Authorization': 'Bearer token'})

print(resp.status_code)

print(resp.text)
...