簡體   English   中英

使用Spark Scala更新Table Hive

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM