使用Python在Databricks中的另一個筆記本中動態創建筆記本
更新時間:2024-04-02 11:59:14問題闡述
我正在嘗試在另一個筆記本中創建一▨個筆記本,創建的筆記本應該同時包含Python代碼和SQL代碼(使用%SQL,%python)。創建后,我需要從父筆記本運行創建的筆記本。有沒有人能建議更好的方法來完成此操作。
我找到🐻了類似dbutils.note book.run()的東西,它將幫助我運行已有的筆記本,但正在尋找一種方法,先創建一個筆記本,然后再運行它。任何建議都是值得理解的!!
精準答案
可以使用Databricks Workspace REST API的import
命令。
如下所示(將筆記本內容放入content
值):
import requests
import os
import json
import base64
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')
content = "some code"
data = {
"content": base64.b64encode(content.encode("utf-8")).decode('ascii'),
"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}'},
json = data
).json()