首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用databricks作业api运行-提交端点调用Databricks notebook

使用databricks作业api运行-提交端点调用Databricks notebook
EN

Stack Overflow用户
提问于 2019-05-16 00:03:38
回答 1查看 1.2K关注 0票数 1

我正在尝试建立一个AWS lambda函数,它调用一个databricks notebook (在s3触发器的情况下),我知道我必须在我的lambda函数(Python)代码中使用databricks的Jobs API来使用.I-submit函数的JSON有效负载来发出POST请求。

尽管文档不是很清楚,但我能够调用一个测试脚本,在检查响应文本时,我看到databricks登录页面的html代码,这意味着它没有通过身份验证。

我确实阅读了用户令牌,但我甚至不确定如何将它们结合起来进行身份验证。

以其他方式实现此功能的任何帮助,或者帮助我使用user_tokens进行身份验证,以便流到达notebook的执行,而不是在身份验证页面被停止,都将是有帮助的。

提前谢谢。

代码示例:

代码语言:javascript
复制
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>
EN

回答 1

Stack Overflow用户

发布于 2019-05-16 04:22:40

已解决:

1)您将需要创建一个用于授权的用户令牌,并在执行REST请求时将其作为'headers‘参数发送。

2)代替token的headers={'Authorization':‘承载token'}必须是您从数据库获取的实际token。

3)接口链接必须以/api开头

4) databricks notebook的路径必须是绝对路径,即"/Users/$USER_NAME/book_name“

最终工作代码:

代码语言:javascript
复制
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)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56153505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档