Apache spark 使用Spylon内核在Jupyter中以“delta”格式保存数据时出错

Apache spark 使用Spylon内核在Jupyter中以“delta”格式保存数据时出错,apache-spark,jupyter-notebook,delta-lake,Apache Spark,Jupyter Notebook,Delta Lake,以delta格式保存数据时遇到错误: $data.write.format(“delta”).save(“gs://xxx/delta-table1”) org.apache.spark.SparkException:作业中止。 位于org.apache.spark.sql.execution.datasources.FileFormatWriter$.write(FileFormatWriter.scala:198) ... 原因:java.lang.ArrayStoreException:o

delta
格式保存数据时遇到错误:

$data.write.format(“delta”).save(“gs://xxx/delta-table1”)
org.apache.spark.SparkException:作业中止。
位于org.apache.spark.sql.execution.datasources.FileFormatWriter$.write(FileFormatWriter.scala:198)
...
原因:java.lang.ArrayStoreException:org.apache.spark.sql.delta.actions.AddFile
在scala.runtime.scalarantime$.array_更新时(scalarantime.scala:75)
在scala.Array$.slowcopy处(Array.scala:84)
在scala.Array$.copy处(Array.scala:110)
...
位于scala.collection.AbstractTraversable.toArray(Traversable.scala:108)
位于org.apache.spark.sql.delta.files.DelayedCommitProtocol.commitJob(DelayedCommitProtocol.scala:59)
位于org.apache.spark.sql.execution.datasources.FileFormatWriter$.write(FileFormatWriter.scala:187)
只有当我将Jupyter与Spylon内核一起使用时才会发生错误,如果我使用spark shell,它就可以正常工作。你知道可能的原因吗

在火花壳中:

$ spark-shell --packages io.delta:delta-core_2.12:0.4.0

scala> import io.delta._
import io.delta._

scala> val data = spark.range(0,5)
data: org.apache.spark.sql.Dataset[Long] = [id: bigint]

scala> data.write.format("delta").save("gs://xxx/delta-table1")
                                                                                
scala> val df = spark.read.format("delta").load("gs://xxx/delta-table1")
df: org.apache.spark.sql.DataFrame = [id: bigint]

scala> df.show()
+---+                                                                           
| id|
+---+
|  2|
|  3|
|  4|
|  0|
|  1|
+---+
在具有Spylon内核的Jupyter中:

[0] %%init_spark

launcher.packages = [

"io.delta:delta-core_2.12:0.4.0"

]

[1] import io.delta._

val data = spark.range(0,5)

data.write.format("delta").save("gs://xxx/delta-table1")

org.apache.spark.SparkException: Job aborted.
...
Caused by: java.lang.ArrayStoreException: org.apache.spark.sql.delta.actions.AddFile


如我所见,
spylon
内核仅针对Scala 2.11和Spark 2.x进行编译。您使用的是针对Scala 2.12编译的Delta版本(请参阅包名中的
\u 2.12
),因此,它与spylon不兼容。您需要将Spark降级到使用Scala 2.11编译的版本,如2.4.7,然后可以将其与Spylon一起使用


另外,使用更新版本的Delta-0.4.0也很有意义,因为它已经很旧了。与Scala 2.11兼容的最新版本是0.6.1…

谢谢您的回答,但我尝试使用Spark 2.4.7将群集的Scala版本降级为2.11.12,但仍然失败,并出现相同的错误。