Apache在DBConnect引发会话是null

“sparkSession零而试图executeCollectResult”错误消息使用DBConnect时发生。

写的何塞·冈萨雷斯

去年发表在:2022年4月1日

问题

你想使用砖连接运行您的代码(AWS|Azure|GCP)当你得到一个sparkSession为空错误消息。

. lang。AssertionError:断言失败:sparkSession零而试图executeCollectResult scala.Predef . assert (Predef.scala: 170)美元org.apache.spark.sql.execution.SparkPlan.executeCollectResult (SparkPlan.scala: 323) org.apache.spark.sql.Dataset anonfun 50.美元美元申请(Dataset.scala: 3351) org.apache.spark.sql.Dataset anonfun 50.美元美元申请(Dataset.scala: 3350) org.apache.spark.sql.Dataset anonfun 54.美元美元申请(Dataset.scala: 3485) org.apache.spark.sql.Dataset anonfun 54.美元美元申请(Dataset.scala: 3480) org.apache.spark.sql.execution.SQLExecution anonfun withCustomExecutionEnv美元1.美元(SQLExecution.scala: 111)应用org.apache.spark.sql.execution.SQLExecution .withSQLConfPropagated美元(SQLExecution.scala: 240)美元org.apache.spark.sql.execution.SQLExecution .withCustomExecutionEnv (SQLExecution.scala: 97)美元org.apache.spark.sql.execution.SQLExecution .withNewExecutionId (SQLExecution.scala: 170) org.apache.spark.sql.Dataset.org apache火花sql数据集$ $美元美元withAction (Dataset.scala: 3480) org.apache.spark.sql.Dataset.collectToPython sun.reflect.NativeMethodAccessorImpl (Dataset.scala: 3350)。invoke0(本机方法)sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 62) sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 43) java.lang.reflect.Method.invoke (Method.java: 498) py4j.reflection.MethodInvoker.invoke (MethodInvoker.java: 244) py4j.reflection.ReflectionEngine.invoke (ReflectionEngine.java: 380) py4j.Gateway.invoke (Gateway.java: 295) py4j.commands.AbstractCommand.invokeMethod (AbstractCommand.java: 132) py4j.commands.CallCommand.execute (CallCommand.java: 79) py4j.GatewayConnection.run (GatewayConnection.java: 251) java.lang.Thread.run (Thread.java: 748)

导致

你得到了sparkSession为空错误消息如果火花会话不活跃集群使用DBConnect当你试图运行您的代码。

解决方案

您必须确保火花会话之前活跃在您的集群使用DBConnect尝试在本地运行您的代码。

您可以使用以下Python示例代码来检查火花会话和创建一个如果它不存在。

%从pyspark python。sql进口SparkSession火花= SparkSession.builder.getOrCreate ()
删除

警告

DBConnect仅适用于砖运行时版本的支持。确保您使用的是运行时支持集群使用DBConnect之前。

这篇文章有用吗?