使用 Python 在 Databricks 中的另一个笔记本中动态创建一个笔记本

时间:2021-05-18 05:13:38

标签: python databricks

我正在尝试在另一个笔记本中创建一个笔记本,创建的笔记本应该包含 python 代码和 sql 代码(使用 % sql ,% python)。一旦创建,我需要从父笔记本运行创建的笔记本。任何人都可以提出更好的方法来做到这一点。

我发现了类似 dbutils.notebook.run() 的东西 - 这将帮助我运行已经存在的笔记本,但寻求一种先创建笔记本然后再运行它的方法。任何建议是可观!!

1 个答案:

答案 0 :(得分:1)

您可以使用 Databricks Workspace REST APIimport 命令。

类似这样(将笔记本内容放入 content 值):

import requests
import os
import json

ctx = json.loads(dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson())
host_name = ctx['extraContext']['api_url']
host_token = ctx['extraContext']['api_token']
notebook_path = ctx['extraContext']['notebook_path']
new_path = os.path.join(os.path.dirname(notebook_path), 'New name')

data = {
  "content": "some code",
  "path": new_path,
  "language": "PYTHON",
  "overwrite": true,
  "format": "SOURCE"
}

response = requests.post(
    '{host_name}/api/2.0/workspace/import',
    headers={'Authorization': f'Bearer {host_token}'},
    data = data
  ).json()