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之前。