Разница между командами SaveAsTable() и hivecontext,sql("вставить таблицу перезаписи") в версии spark sql 1.6

Мы можем переписать результат запроса в таблицу двумя способами.

  1. update_data.write.mode(Overwrite).saveAsTable("table_name")
  2. 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")

0 ответов

Другие вопросы по тегам