Databricks:如何获取当前笔记本的路径?

Esb*_*rdt 5 path jupyter-notebook databricks azure-databricks

Databricks 非常智能,但如何识别当前笔记本的路径?网站上的指南没有帮助。

它建议:

%scala
dbutils.notebook.getContext.notebookPath
res1: Option[String] = Some(/Users/user@org.dk/my_test_notebook)
Run Code Online (Sandbox Code Playgroud)

这并没有给我完整的路径,而是给我一些无法从笔记本访问的文件夹结构的路径。我需要路径,以便我可以在与.ipynb文件相同的文件夹中进行系统调用。

有什么建议?

小智 35

您可以使用 dbutils 命令检索信息:

dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()
Run Code Online (Sandbox Code Playgroud)

  • 您在哪里找到此功能的文档? (4认同)

小智 14

对于 Scala 来说是:

dbutils.notebook().getContext().notebookPath.get
Run Code Online (Sandbox Code Playgroud)

对于Python:

dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()
Run Code Online (Sandbox Code Playgroud)


Esb*_*rdt 3

使用 Databricks API 访问文件

我最终使用 Databricks API 从 Databricks 下载和上传笔记本和其他文件,在一定程度上解决了该问题。

1. 阅读 Databricks Workspace API 文档

Databricks API 文档

2. 生成API token并获取Notebook路径

在用户界面中执行以下操作来生成 API 令牌并复制笔记本路径:

  1. 选择“用户设置”
  2. 选择“生成新令牌”
  3. 在 Databrick 文件资源管理器中,“右键单击”并选择“复制文件路径”

3. 从 Databricks 下载 Notebook

如果您想访问笔记本文件,可以使用curl 调用下载它。如果您位于 Databricks 笔记本中,则只需使用单元魔术 %sh 或使用系统调用 os.system('insert command') 即可进行此调用。

curl --header "Content-Type: application/json" --request GET --data '{"path":"{/Users/myuser@myorg.com/notebook_to_download}","format":"JUPYTER"}' https://{replace_with_your_databaricks}/api/2.0/workspace/export -H "Authorization: Bearer {my_token}" | jq -r .content | base64 --decode > my_downloaded_notebook.ipynb
Run Code Online (Sandbox Code Playgroud)

4. 将笔记本上传到 Databricks

您可以使用以下curl调用类似地从计算机上传笔记本:

curl -n -F format=JUPYTER -F path="{/Users/myuser@myorg.com/uploaded_notebook}" -F language=PYTHON -F content=@{/my/local/notebook.ipynb} https://{replace_with_your_databaricks}/api/2.0/workspace/import -H "Authorization: Bearer {my_token}"
Run Code Online (Sandbox Code Playgroud)