相关疑难解决方法(0)

saveAsTable和insertInto在不同的SaveMode中有什么区别?

我试图写一个DataFrame进入Hive表(上S3中)Overwrite模式(需要我的应用程序),并需要DataFrameWriter(火花/斯卡拉)的两种方法之间做出选择.从我可以中读取文档,df.write.saveAsTable不同于df.write.insertInto在以下几个方面:

  • saveAsTable在使用基于位置的分辨率insertInto使用基于列名称的分辨率
  • 在附加模式下,saveAsTable更多关注现有表的底层模式以进行某些分辨率

总体而言,它给我的印象是,saveAsTable仅仅是一个更聪明的版本insertInto.或者,根据用例,人们可能更喜欢insertInto

但是这些方法中的每一种都有自己的一些注意事项,例如性能损失saveAsTable(因为它包含更多功能)?除了在文档中讲述(不是非常清楚)的内容之外,他们的行为还有其他差异吗?


编辑-1

文档说明了这一点 insertInto

将DataFrame的内容插入到指定的表中

这个 saveAsTable

在表已存在的情况下,此函数的行为取决于模式函数指定的保存模式

现在我可以列出我的怀疑

  • 是否insertInto总是期望表存在吗?
  • 不要SaveMode■找什么影响insertInto
  • 如果以上答案是肯定的,那么
    • 什么之间的区别saveAsTableSaveMode.AppendinsertInto给该表已经存在?
    • insertIntoSaveMode.Overwrite任何意义?

scala apache-spark apache-spark-sql

13
推荐指数
3
解决办法
1万
查看次数

标签 统计

apache-spark ×1

apache-spark-sql ×1

scala ×1