使用databricks-connect调用collect()时遭遇Py4JJavaError问题求助
问题描述
在本地JupyterLab连接Spark集群时,执行以下代码报错:
df.select('col_1').distinct().collect()
该代码在Databricks Notebook中可正常运行,但本地执行所有将数据返回至Python的操作(如collect()、toPandas())都会触发错误。环境配置:Java 8、databricks-connect 10.4.40。
报错核心信息:
Py4JJavaError: An error occurred while calling o98.collectToPython. : java.lang.NumberFormatException: null at java.lang.Long.parseLong(Long.java:552) at scala.collection.immutable.StringLike.toLong(StringLike.scala:309) at com.databricks.spark.util.DatabricksConnectConf$.$anonfun$getOrgId$2(DatabricksConnectConf.scala:94)
已尝试更换Java和pandas版本,问题未解决。
解决方案
- 检查并设置
DATABRICKS_ORG_ID环境变量,确保其值为有效的组织ID(非空)。 - 重新运行
databricks-connect configure命令,完成全量配置,重点确认组织ID字段填写正确,不要留空。 - 在代码中验证Spark配置是否生效,添加以下代码检查:
确保输出为有效的数字ID,而非空值。spark = SparkSession.builder.getOrCreate() print(spark.conf.get("spark.databricks.service.orgId")) - 重启JupyterLab,让新的配置或环境变量生效。
内容的提问来源于stack exchange,提问作者moonshine2
相关产品推荐
相关产品推荐

