使用 databricks-connect 调试运行另一个笔记本的笔记本

Posted

技术标签:

【中文标题】使用 databricks-connect 调试运行另一个笔记本的笔记本【英文标题】:Using databricks-connect debugging a notebook that runs another notebook 【发布时间】:2021-10-07 21:24:51 【问题描述】:

我能够使用 Visual Studio 代码从我的 Linux Centos VM 连接到 Azure Databricks 集群。

下面的代码甚至可以正常工作

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

print("Cluster access test - ",spark.range(100).count())

setting = spark.conf.get("spark.master")  # returns local[*]
if "local" in setting:
    from pyspark.dbutils import DBUtils
    dbutils = DBUtils().get_dbutils(spark)
else:
    print("Do nothing - dbutils should be available already")

out = dbutils.fs.ls('/FileStore/')
print(out)

我在本地有一个笔记本,它使用%run path/anothernotebook 运行另一个笔记本。

因为 %run 字符串被注释了 #python 没有执行它。

所以我尝试包含dbutils.notebook.run('pathofnotebook'),但它错误地指出笔记本

Exception has occurred: AttributeError
'SparkServiceClientDBUtils' object has no attribute 'notebook'

是否可以在本地调试调用另一个笔记本的笔记本?

【问题讨论】:

【参考方案1】:

这是不可能的 - Databricks Connect 中包含的 dbutils 实现仅支持“fs”和“secrets”子命令(请参阅 docs)。

Databricks Connect 旨在处理本地开发的代码,而不是笔记本。如果您可以将该笔记本的内容打包为 Python 包,那么您将能够对其进行调试。

附:请注意 dbutils.notebook.run 将 notebook 作为单独的作业执行,与 %run 相比

【讨论】:

以上是关于使用 databricks-connect 调试运行另一个笔记本的笔记本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 databricks-connect 在本地执行 Spark 代码?

Databricks-Connect 还返回找不到多个 python 文件作业的模块

databricks-connect 无法连接到 Databricks 集群运行时 8.4

Databricks Connect:无法连接到 azure 上的远程集群,命令:“databricks-connect test”停止

如何用gdb调试erlang运行期

GTD180006:运维安装调试GDB