【问题标题】:Databricks: How do I get path of current notebook?Databricks:如何获取当前笔记本的路径?
【发布时间】:2018-11-28 16:03:28
【问题描述】:

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

它暗示:

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

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

有什么建议吗?

【问题讨论】:

    标签: path jupyter-notebook databricks azure-databricks


    【解决方案1】:

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

    dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()
    

    【讨论】:

    • 你在哪里找到这个函数的文档?
    • 据我了解,此命令适用于 Python。对于 Scala,它是:dbutils.notebook().getContext().notebookPath.get
    • 它给了我一个错误AttributeError: module 'dbutils' has no attribute 'notebook'
    【解决方案2】:

    笔记本不会停留在驱动程序上。每当您运行一个单元格时,该单元格将被发送到当前的 spark 会话中执行。

    试试这个来检查。

    %sh
    pwd
    ls

    如果您想访问某些文件或代码,您可以上传DBFS 并访问它。如果是代码,您可以将其编译为 .jar(java, Scala) 或 .egg(python) 并将 library 附加到运行 notebook 的集群。

    【讨论】:

    • 问题是 Databricks 没有与 VSTS 集成。一种解决方法是使用 CLI 在本地下载 notebook,然后在本地使用 git。但是,我更愿意将所有内容都保存在 Databricks 中。如果我可以将 .ipynb 下载到 dbfs,那么我可以使用系统调用使用 git 将笔记本推送到 VSTS。
    • @EsbenEickhardt:截至 2019 年 1 月,Databricks 现在集成了 VSTS(现在称为 Azure DevOps)。
    【解决方案3】:

    对于 Scala,它是:

    dbutils.notebook().getContext().notebookPath.get
    

    对于 Python:

    dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get()
    

    【讨论】:

    • 在 Python 中它给了我一个错误AttributeError: module 'dbutils' has no attribute 'notebook'
    • 对不起,弗拉基米尔,不能帮你。该代码对我有用。
    【解决方案4】:

    您可以通过此步骤获取笔记本的路径,答案也在您问题的建议中。 (假设你正在处理的笔记本是你的)

    1. 进入工作区
    2. 如果笔记本是特定的用户文件夹。点击用户
    3. 点击特定的user@org.dk
    4. 然后在笔记本名称 /my_test_notebook 上

    所以你的最终路径变成 /Users/user@org.dk/my_test_notebook

    【讨论】:

    • 作者在问另一件事 - 他能够通过dbutils.notebook.getContext.notebookPath 呼叫获得路径...
    【解决方案5】:

    使用 Databricks API 访问文件

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

    1。阅读 Databricks Workspace API 的文档

    Databricks API Documentation

    2。生成 API 令牌并获取 Notebook 路径

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

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

    3。从 Databricks 下载笔记本

    如果你想访问一个笔记本文件,你可以使用 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
    

    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}"
    

    【讨论】:

      猜你喜欢
      • 2018-11-19
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-08
      • 2011-03-09
      • 2020-11-11
      • 2022-06-23
      相关资源
      最近更新 更多