Databricks Runtime14.3中如何使用sparkContext设置检查点目录?
解决Databricks Runtime 14.3 LTS里SparkContext用不了的问题
为啥会报错
Databricks Runtime 14.3 LTS默认开启了Spark Connect,而Spark Connect的客户端会话不支持依赖JVM的sparkContext属性——这就是你碰到报错的根本原因。哪怕手动创建Session,只要没关掉Spark Connect,还是会走客户端模式,拿不到原生的SparkContext。
解决办法
办法1:集群层面关闭Spark Connect
- 进入Databricks集群配置页面,找到「Spark配置」选项
- 添加以下配置:
spark.databricks.session.useSparkConnect false - 重启集群,之后默认的
spark会话就是原生SparkSession,直接执行spark.sparkContext.setCheckpointDir("/FileStore/checkpoint")即可生效
办法2:笔记本里临时切换到原生Session
如果不想重启集群,可在笔记本开头执行以下代码,强制使用原生SparkSession(仅对当前笔记本生效):
import org.apache.spark.sql.SparkSession val spark = SparkSession.builder() .appName("NativeSession") .getOrCreate() // 现在可正常使用sparkContext spark.sparkContext.setCheckpointDir("/FileStore/checkpoint")
注:无需指定master参数,会自动继承集群的配置。
办法3:不用SparkContext也能设置检查点
要是只是想配置检查点目录,直接通过SparkSession的配置项设置即可,无需调用sparkContext:
spark.conf.set("spark.sql.streaming.checkpointLocation", "/FileStore/checkpoint")
该配置会作用于后续的流处理作业,和直接设置sparkContext检查点目录的效果一致。
内容的提问来源于stack exchange,提问作者Tarique
相关产品推荐
相关产品推荐

