如何在Databricks /%运行中引用笔记本的路径?

时间:2018-06-09 06:31:12

标签: python databricks

我熟悉Databricks中的%run magic命令,但笔记本实际上在哪里?

使用%sh pwd的rootdir似乎是/ databricks / driver。让Python查找笔记本路径(例如,subprocess.call([/ notebook / path])失败,因为它在这个rootdir中查找笔记本路径并且显然是空的。笔记本必须住在其他地方,但在哪里? %运行调用什么路径来查找笔记本?

作为参考,我试图在Databricks中实现pytest,而pytest.main()应该允许我在笔记本中运行测试代替典型的命令行方法...如果它可以找到哪里笔记本的存在。

2 个答案:

答案 0 :(得分:3)

我一直在寻找相同的东西,在深入研究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

答案 1 :(得分:0)

您可以使用Scala根据https://docs.azuredatabricks.net/user-guide/faq/get-notebook-path.html获取当前的笔记本路径。对于Python,您需要通过Scala和Widget(如同一常见问题解答中所述)的解决方法:

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

并在python中阅读它:

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