【发布时间】:2022-01-20 02:12:48
【问题描述】:
import spark.implicits._
val data = Seq(("James","Sales",34))
val df1 = data.toDF("name","dept","age")
df1.printSchema()
df1.write.option("mergeSchema", "true").format("delta").save("/location")
val data2 = Seq(("Tiger","Sales","34") )
var df2 = data2.toDF("name","dept","age")
df2.printSchema()
df2.write.option("mergeSchema", "true").format("delta").save("/location")
df2.show(false)
当我们编写 df2 数据帧时,它失败了,因为在 delta 表中,age 是 IntergerType,而第二个 df2 age 是 StringType。我们如何处理这种情况,以便代码顺利处理这种情况。
【问题讨论】:
-
无论您需要追加数据还是覆盖数据,您都必须提供模式。您还需要将 OverwriteSchema 选项提供为 True。
标签: dataframe scala azure-databricks delta-lake