[英]Update Table Hive Using Spark Scala
我需要update
一個Table Hive
update A from B
set
Col5 = A.Col2,
Col2 = B.Col2,
DT_Change = B.DT,
Col3 = B.Col3,
Col4 = B.Col4
where A.Col1 = B.Col1 and A.Col2 <> B.Col2
使用Scala Spark RDD
我怎樣才能做到這一點 ?
我想將這個問題分為兩個問題,以使其簡單解釋。 第一個問題:如何將Spark RDD數據寫入Hive表? 最簡單的方法是使用rdd.toDF()
方法將RDD轉換為Spark SQL(數據幀rdd.toDF()
。 然后使用df.registerTempTable("temp_table")
將數據幀注冊為臨時df.registerTempTable("temp_table")
。 現在,您可以從臨時表中查詢並使用sqlContext.sql("insert into table my_table select * from temp_table")
。 第二個問題:如何從Spark更新Hive表? 到目前為止,Hive並不是最適合記錄級別的更新。 更新只能在支持ACID的表上執行。 一個主要限制是僅ORC格式支持更新Hive表。 您可以從https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions找到一些有關它的信息。 為此,您可以參考如何使用Scala如何從Spark刷新ORC Hive表 。
很少有方法會在spark 2.x中棄用,您可以在spark 2.0文檔中查看最新方法。 盡管可能會有更好的方法,但這是我能想到的最簡單的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.