Databricks 笔记本执行上下文

将笔记本附加到群集时,Azure Databricks 会创建执行上下文。 执行上下文包含以下每种受支持编程语言的 REPL 环境的状态:Python、R、Scala 和 SQL。 当你在笔记本中运行某个单元格时,该命令会调度到相应的语言 REPL 环境并运行。

还可以使用命令执行 API 来创建执行上下文并发送要在执行上下文中运行的命令。 类似地,该命令会调度到相应的语言 REPL 环境并运行。

群集的执行上下文数量有上限(145 个)。 一旦执行上下文数量达到此阈值,就不能将笔记本附加到群集或创建新的执行上下文。

空闲的执行上下文

如果上次完成执行后经过的时间超过了已设置的空闲阈值,系统会将执行上下文视为空闲。 上次完成的执行是指笔记本上次执行完命令的时间。 空闲阈值是指在上次完成的执行与任何自动拆离笔记本的尝试之间必须经历的时间。

当群集达到最大上下文限制时,Azure Databricks 会根据需要删除(逐出)空闲执行上下文(从最近使用次数最少的开始)。 即使删除了上下文,使用上下文的笔记本仍附加到群集,并显示在群集的笔记本列表中。 流式处理笔记本会被视为正在活跃地运行,其上下文不会被逐出,直到其执行被停止为止。 如果逐出某个空闲上下文,UI 会显示一条消息,指出使用该上下文的笔记本已由于处于空闲状态而被拆离。

Notebook context evicted

如果尝试将笔记本附加到已达到执行上下文上限且没有空闲上下文(或禁用了自动逐出)的群集,则 UI 会显示一条消息,指出已达到当前的最大执行上下文阈值,笔记本会保持在已拆离状态。

Notebook detached

如果为某个进程创建分支,则在为进程创建分支的请求的执行返回后,空闲执行上下文仍会被视为空闲。 使用 Spark 时,建议不要为独立的进程创建分支。

配置上下文自动逐出

默认情况下会启用自动逐出。 若要对某个群集禁用自动逐出,请设置 Spark 属性spark.databricks.chauffeur.enableIdleContextTracking false

确定 Spark 和 Databricks Runtime 版本

若要确定笔记本附加到的群集的 Spark 版本,请运行:

spark.version

若要确定笔记本附加到的群集的 Databricks Runtime 版本,请运行:

spark.conf.get("spark.databricks.clusterUsageTags.sparkVersion")

注意

sparkVersion 标记以及群集 API作业 API 中的终结点所需的 spark_version 属性均指的是 Databricks Runtime 版本(而不是 Spark 版本)。