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

使用Databricks-Connect 13.2.0连接集群报错:非共享/单用户集群

Databricks Connect 13.2.0 连接Shared集群报错“INVALID_STATE”的解决方案

问题详情

使用databricks-connect 13.2.0执行本地Spark代码时,触发以下错误:

details = "INVALID_STATE: cluster xxxxx is not Shared or Single User Cluster. (requestId=05bc3105-4828-46d4-a381-7580f3b55416)"
debug_error_string = "UNKNOWN:Error received from peer  {grpc_message:"INVALID_STATE: cluster 0711-122239-bb999j6u is not Shared or Single User Cluster. (requestId=05bc3105-4828-46d4-a381-7580f3b55416)", grpc_status:9, created_time:"2023-07-11T15:26:08.9729+02:00"}"
  • 集群实际配置为Shared访问模式,运行时版本13.2
  • 本地环境:Python 3.10、openjdk 1.8.0_292、Azure Databricks

排查与解决步骤

1. 确认集群访问模式类型

Databricks Connect仅支持Shared或Single User访问模式的集群,需注意:

  • 进入Azure Databricks控制台,找到目标集群,切换到「配置」标签,检查「访问模式」是否为严格的Shared(而非「No Isolation Shared」)
  • 若为「No Isolation Shared」,需修改为「Shared」模式后重启集群

2. 校验Databricks Connect配置准确性

  • 本地执行databricks configure --connect,重新确认:
    • 集群ID是否与报错中的ID(0711-122239-bb999j6u)完全一致
    • 工作区URL、认证Token是否正确
  • 确保目标集群处于运行中状态,无启动或停止异常

3. 对齐依赖版本与清理冲突

  • 升级databricks-connect到13.2分支的最新补丁版本:
    pip install --upgrade databricks-connect==13.2.*
    
  • 卸载本地可能存在的pyspark,避免环境冲突:
    pip uninstall -y pyspark
    

4. 检查集群权限设置

  • 在集群的「权限」标签下,确认当前Token对应的用户拥有「允许附加到集群」权限,无权限限制导致的访问异常

验证代码调整

原代码中print(temps)仅会输出DataFrame结构,若要显示数据内容,需添加temps.show():

from databricks.connect import DatabricksSession
from pyspark.sql.types import *
from datetime import date

if __name__ == "__main__":
    spark = DatabricksSession.builder.getOrCreate()

    schema = StructType([
        StructField('AirportCode', StringType(), False),
        StructField('Date', DateType(), False),
        StructField('TempHighF', IntegerType(), False),
        StructField('TempLowF', IntegerType(), False)
    ])

    data = [
        [ 'BLI', date(2021, 4, 3), 52, 43],
        [ 'BLI', date(2021, 4, 2), 50, 38],
        [ 'BLI', date(2021, 4, 1), 52, 41],
        [ 'PDX', date(2021, 4, 3), 64, 45],
        [ 'PDX', date(2021, 4, 2), 61, 41],
        [ 'PDX', date(2021, 4, 1), 66, 39],
        [ 'SEA', date(2021, 4, 3), 57, 43],
        [ 'SEA', date(2021, 4, 2), 54, 39],
        [ 'SEA', date(2021, 4, 1), 56, 41]
    ]

    temps = spark.createDataFrame(data, schema)
    temps.show()  # 替换print(temps)以显示数据内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:12:45