databricks - 使用 Databricks Job api 调用 databricks 笔记本运行-提交端点
问题描述
我正在尝试建立一个 AWS lambda 函数,该函数调用一个 databricks 笔记本(在 s3 触发器的情况下)。我知道我必须在我的 lambda 函数(python)代码中使用 databricks 的 Jobs API 来使用 POST 请求运行提交函数的 JSON 有效负载。
虽然文档不是很清楚,但我能够调用测试脚本并在检查响应文本时看到 databricks 登录页面 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) 您需要创建一个用户令牌以进行授权,并在执行 REST 请求时将其作为“标头”参数发送。
2) headers={'Authorization': 'Bearer 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)
推荐阅读
- wordpress - 付款 IPN 失败时防止 Woocommerce 订单自动完成
- wordpress - 对自定义帖子类型使用 publish_{custom-post-type} 钩子来更新元数据不起作用
- ruby - ImageList 包含相等的图像 rmagick
- python - DLL 加载失败 gpu
- node.js - 使用 heroku 部署小型 nodejs 应用程序时出错
- java - 调色板未在 Eclipse 窗口构建器中加载
- javascript - 如何延长 websocket 中的超时连接限制?
- c# - 不知道如何加载 50 个问题而不是 500 个
- javascript - 如果元素在javascript中点击了parant,如何仅选择孩子
- c++ - 自定义数学向量实现中不存在从 vec2f 到 vec5f 的适当转换