Разница между командами SaveAsTable() и hivecontext,sql("вставить таблицу перезаписи") в версии spark sql 1.6
Мы можем переписать результат запроса в таблицу двумя способами.
update_data.write.mode(Overwrite).saveAsTable("table_name")
hc.sql("insert overwrite table table_name select * from src_table_name")
Я не знаю разницы между двумя подходами, описанными выше, и которые я должен использовать при работе с данными таблицы улья.
Например:
val hc=new org.apache.spark.sql.hive.HiveContext(sc)
val src_res=hc.sql("select * from db.src_test1").toDF()
val tgt_res=hc.sql("select *from db.tgt_test1").toDF()
src_res.registerTempTable("src_tbl")
tgt_res.registerTempTable("tgt_tbl")**
подход 1:
hc.sql("insert overwrite table db.table3 select t2.* from src_tbl t1 right outer join tgt_tbl t2 on t1.id=t2.id where t1.id is null union all select * from src_tbl")
подход 2:
val update_data=hc.sql("select t2.* from src_tbl t1 right outer join tgt_tbl t2 on t1.id=t2.id where t1.id is null union all select * from src_tbl")
update_data.write.mode("overwrite").saveAsTable("db.table3")