Databricks 很聪明,但是您如何识别当前笔记本的路径?网站上的指南没有帮助。
它建议:
%scala
dbutils.notebook.getContext.notebookPath
res1: Option[String] = Some(/Users/user@org.dk/my_test_notebook)
这并没有给我完整的路径,而是一些无法从笔记本访问的文件夹结构的路径。我需要路径,这样我就可以在与.ipynb文件相同的文件夹中进行系统调用。
有什么建议么?
Databricks 很聪明,但是您如何识别当前笔记本的路径?网站上的指南没有帮助。
它建议:
%scala
dbutils.notebook.getContext.notebookPath
res1: Option[String] = Some(/Users/user@org.dk/my_test_notebook)
这并没有给我完整的路径,而是一些无法从笔记本访问的文件夹结构的路径。我需要路径,这样我就可以在与.ipynb文件相同的文件夹中进行系统调用。
有什么建议么?
您可以使用 dbutils 命令检索信息:
dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()
对于 Scala,它是:
dbutils.notebook().getContext().notebookPath.get
对于 Python:
dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()
您可以通过此步骤获得笔记本的路径,答案也在您问题的建议中。(假设您正在使用的笔记本是您的)
所以你的最终路径变成 /Users/user@org.dk/my_test_notebook
我最终使用 Databricks API 将笔记本和其他文件下载和上传到/从 Databricks 解决了这个问题。
在用户界面中执行以下操作以生成 API 令牌并复制笔记本路径:
如果你想访问一个笔记本文件,你可以使用 curl-call 下载它。如果您位于 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
您可以类似地使用以下 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}"