使用VS Code中Databricks扩展(Databricks Connect V2)无法运行部分方法
Databricks Connect调用show()报错:Method not found: spark.connect.SparkConnectService/ReattachExecute
问题描述
按官方文档配置Databricks Connect后,运行示例代码中的show()方法时,VS Code终端和Jupyter Notebook均触发相同错误。不调用show()时,执行print(type(customers))或customers.printSchema()可正常输出结果。
关键信息
- VS Code Databricks扩展版本:v1.1.3
- 虚拟环境Python版本:3.10.4,与Databricks集群Python版本一致
- 运行方式:.py文件用「Run Python File」,.ipynb用「debug cell」,均基于Databricks Connect
错误详情
pyspark.errors.exceptions.connect.SparkConnectGrpcException: <_MultiThreadedRendezvous of RPC that terminated with: status = StatusCode.UNIMPLEMENTED details = "Method not found: spark.connect.SparkConnectService/ReattachExecute" debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"Method not found: spark.connect.SparkConnectService/ReattachExecute", grpc_status:12, created_time:"2023-10-02T22:47:34.7298799+00:00"}"
示例代码
from pyspark.sql import SparkSession from pyspark.sql.types import * spark = SparkSession.builder.getOrCreate() schema = StructType([ StructField('CustomerID', IntegerType(), False), StructField('FirstName', StringType(), False), StructField('LastName', StringType(), False) ]) data = [ [ 1000, 'Mathijs', 'Oosterhout-Rijntjes' ], [ 1001, 'Joost', 'van Brunswijk' ], [ 1002, 'Stan', 'Bokenkamp' ] ] customers = spark.createDataFrame(data, schema) customers.show()
解决方案
这个错误核心原因是Databricks Connect客户端与集群端的Spark Connect版本不匹配,导致客户端调用了集群未实现的RPC方法。可按以下步骤修复:
核对集群Runtime版本
确认集群使用的Databricks Runtime版本支持Spark Connect(需13.3 LTS及以上),并记录对应Spark版本(如Runtime 13.3对应Spark 3.4.1)。统一客户端与集群的Spark版本
在虚拟环境中卸载现有pyspark,安装与集群匹配的版本:pip uninstall pyspark -y pip install pyspark==<集群对应Spark版本>重新配置Databricks Connect
运行databricks-connect configure,检查并确认集群ID、Workspace URL、认证token等配置项无误,完成后重启VS Code和虚拟环境。临时替代方案
若暂时无法升级版本,可使用customers.toPandas().head()替代customers.show(),同样能查看DataFrame内容,且不会触发该RPC方法。
内容的提问来源于stack exchange,提问作者Luke88
相关产品推荐
相关产品推荐

