You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需重启Dash应用重新建立Databricks Connect连接?

解决Databricks Connect会话过期后在Dash应用内恢复连接的问题

核心问题原因

你遇到的session_id is no longer usable错误是因为Databricks Connect会话因闲置超时被回收,而Spark Connect不支持newSession()方法(该方法依赖JVM,而Spark Connect客户端无JVM运行环境)。

正确的会话恢复流程

无需使用spark.newSession(),直接通过以下步骤重建有效会话:

  • 调用spark.stop()关闭已失效的旧会话
  • 重新初始化Databricks会话实例

代码实现示例

1. 封装会话验证与重建逻辑

from grpc import StatusCode
from grpc._channel import _InactiveRpcError
from databricks.connect import DatabricksSession

# 全局Spark会话变量
spark = DatabricksSession.builder.serverless().getOrCreate()

def get_valid_spark_session():
    global spark
    try:
        # 执行简单查询验证会话有效性
        spark.sql("SELECT 1").collect()
        return spark
    except _InactiveRpcError as e:
        if e.code() == StatusCode.FAILED_PRECONDITION:
            # 会话失效,重建连接
            spark.stop()
            spark = DatabricksSession.builder.serverless().getOrCreate()
            return spark
        # 其他GRPC异常直接抛出
        raise

2. 在Dash回调中使用验证后的会话

import dash
from dash import dcc, html, Input, Output, callback
import plotly.express as px

app = dash.Dash(__name__)

# Dash布局示例
app.layout = html.Div([
    dcc.Dropdown(id='category-dropdown', options=['A', 'B', 'C'], value='A'),
    dcc.Graph(id='data-graph')
])

@callback(
    Output('data-graph', 'figure'),
    Input('category-dropdown', 'value')
)
def update_graph(selected_category):
    # 获取有效会话
    spark = get_valid_spark_session()
    # 执行数据查询
    query = f"SELECT category, count FROM demo_table WHERE category = '{selected_category}'"
    df = spark.sql(query).toPandas()
    # 生成Plotly图表
    return px.bar(df, x='category', y='count')

if __name__ == '__main__':
    app.run_server(debug=True)

额外建议

  • 可在Databricks控制台调整计算资源的闲置超时时间,降低会话过期频率,但无法完全避免,因此自动重建逻辑是必要的
  • 每次数据查询前通过验证函数获取有效会话,避免长期持有失效实例导致的异常

内容的提问来源于stack exchange,提问作者Carson Grose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:48:19