簡體   English   中英

如何在 Databricks 中引用筆記本的路徑/%run 在做什么?

[英]How can I reference the path of a notebook in Databricks/what is %run doing?

我熟悉 Databricks 中的 %run 魔法命令,但是筆記本實際上在哪里?

使用 %sh pwd 的 rootdir 似乎是 /databricks/driver。 讓 Python 查找筆記本路徑(例如, subprocess.call([the/notebook/path]) 失敗,因為它在此 rootdir 中查找筆記本路徑並且顯然是空的。筆記本必須位於其他地方,但在哪里? %run 調用什么路徑來查找筆記本?

作為參考,我正在嘗試在 Databricks 中實現 pytest,而 pytest.main() 應該允許我在筆記本本身內運行測試,而不是典型的命令行方法……如果它可以找出筆記本所在的位置.

我正在尋找同樣的東西,經過一些挖掘dbutils ,這是我提出的解決方案:

import json
context = json.loads(dbutils.notebook.entry_point.getDbutils().notebook().getContext().toJson())
print(context['extraContext']['aclPathOfAclRoot']) # Base path
print(context['extraContext']['notebook_path']) # Notebook path

您可以使用Scala根據https://docs.azuredatabricks.net/user-guide/faq/get-notebook-path.html獲取當前的Notebook Path。 對於Python,您需要通過Scala和Widget進行解決方法,如同一個FAQ中所述:

%scala
dbutils.widgets.text("notebook", dbutils.notebook.getContext().notebookPath.get)

並在python中閱讀:

%python
dbutils.widgets.get("notebook")

基於@Martin 的回答,但不使用小部件(這會創建您可能不想要的 UI 元素):

%scala
spark.conf.set("nb.path", dbutils.notebook.getContext().notebookPath.get)

進而:

%python
path = spark.conf.get("nb.path")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM