我熟悉Databricks中的%run magic命令,但笔记本实际上在哪里?
使用%sh pwd的rootdir似乎是/ databricks / driver。让Python查找笔记本路径(例如,subprocess.call([/ notebook / path])失败,因为它在这个rootdir中查找笔记本路径并且显然是空的。笔记本必须住在其他地方,但在哪里? %运行调用什么路径来查找笔记本?
作为参考,我试图在Databricks中实现pytest,而pytest.main()应该允许我在笔记本中运行测试代替典型的命令行方法...如果它可以找到哪里笔记本的存在。
答案 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")