升级集群的 Databricks Runtime 后调试 PySpark 时出错

Posted

技术标签:

【中文标题】升级集群的 Databricks Runtime 后调试 PySpark 时出错【英文标题】:Error debugging PySpark after upgrading cluster's Databricks Runtime 【发布时间】:2021-03-18 10:46:26 【问题描述】:

我已将 Azure Databricks 集群从运行时 5.5LTS 更新到 7.3LTS。现在我在 VSCode 中调试时遇到错误。我已经像这样更新了我的 Anaconda 连接:

> conda create --name dbconnect python=3.7
> conda activate dbconnect
> pip uninstall pyspark
> pip install -U databricks-connect==7.3.*
> databricks-connect configure
> databricks-connect test

到目前为止一切顺利,但现在我正在尝试调试以下内容

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()
setting = spark.conf.get("spark.master")

if "local" in setting:
    from pyspark.dbutils import DBUtils
    dbutils = DBUtils(spark.sparkContext)

dbutils = DBUtils(spark.sparkContext),它会抛出异常

发生异常:AttributeError 'SparkContext' 对象没有 属性'conf'

我已尝试创建conf

from pyspark.dbutils import DBUtils
import pyspark
conf = pyspark.SparkConf()
pyspark.SparkContext.getOrCreate(conf=conf)
dbutils = DBUtils(spark.sparkContext)

但我仍然遇到同样的错误。有人可以告诉我我做错了什么吗?

【问题讨论】:

【参考方案1】:

根据文档Access DBUtils,您需要传递 SparkSession spark 而不是 SparkContext:

from pyspark.sql import SparkSession
from pyspark.dbutils import DBUtils

spark = SparkSession.builder.getOrCreate()

dbutils = DBUtils(spark)

【讨论】:

以上是关于升级集群的 Databricks Runtime 后调试 PySpark 时出错的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes集群添加运行containerd runtime的 work节点

Databricks 中使用的集群管理器是啥?如何更改 Databricks 集群中的执行程序数量?

Databricks 笔记本在内存作业中崩溃

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

如何从 PyCharm 连接 Databricks 社区版集群

在 Spark 作业中获取 Databricks 集群 ID(或获取集群链接)