在中保存数据时遇到错误 delta
格式:
$ data.write.format("delta").save("gs://xxx/delta-table1")
org.apache.spark.SparkException: Job aborted.
at org.apache.spark.sql.execution.datasources.FileFormatWriter$.write(FileFormatWriter.scala:198)
...
Caused by: java.lang.ArrayStoreException: org.apache.spark.sql.delta.actions.AddFile
at scala.runtime.ScalaRunTime$.array_update(ScalaRunTime.scala:75)
at scala.Array$.slowcopy(Array.scala:84)
at scala.Array$.copy(Array.scala:110)
...
at scala.collection.AbstractTraversable.toArray(Traversable.scala:108)
at org.apache.spark.sql.delta.files.DelayedCommitProtocol.commitJob(DelayedCommitProtocol.scala:59)
at org.apache.spark.sql.execution.datasources.FileFormatWriter$.write(FileFormatWriter.scala:187)
这个错误只发生在我将jupyter与spylon内核一起使用时,如果我使用sparkshell它就可以工作。你知道可能的原因吗?
Spark壳内:
$ 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
1条答案
按热度按时间cngwdvgl1#
在我看来
spylon
内核只针对scala2.11和spark2.x编译。您使用的是针对Scala2.12编译的delta版本(请参阅_2.12
因此,它与spylon不兼容。您需要将spark降级到scala2.11编译的版本,比如2.4.7,然后您就可以将它与spylon一起使用了。p、 而且,使用更新版本的delta是有意义的-0.4.0已经很旧了。与scala 2.11兼容的最新版本是0.6.1。。。