Spark SQL实现分区表的分区覆盖
在Spark SQL中,如果想把一个DataFrame保存到Hive表中,有两个方法可以使用,分别是insertInto和saveAsTable()。
1、保存DataFrame数据到Hive表中
当使用saveAsTable()方法时:
- 1)如果表不存在,则会创建表;
- 2)如果表已经存在,则取决于保存模式(SaveMode):
- (1) 如果不指定保存模式(默认),则会抛出异常;
- (2) 如果指定append模式,则会追加df数据到表中,且df的schema与已存在的schema个数要相同(列顺序可以不同),否则出错;
- (3) 如果指定overwrite模式,则会用df数据覆盖表中已有的数据。
当使用insertInto()方法时,表必须已经存在,且df的schema结构顺序与指定Hive表的schema结构顺序必须一致。其行为也取决于插入模式(SaveMode):
- (1) 如果不指定保存模式,则默认是append,会追加df数据到表中;
- (2) 如果指定overwrite模式,则会用df数据覆盖表中已有的数据。
2、对分区表的全表覆盖
在分区表中,当调用saveAsTable()方法和insertInto()方法并均指定SaveMode存储模式为orvewrite时,实现的是分区表的全表覆盖。
......
......
抱歉,只有登录会员才可浏览!会员登录