取消
顯示的結果
而不是尋找
你的意思是:

創建一個內存表的火花,將數據插入它

Sri1
新的貢獻者二世

你好,

我的要求是需要創建一個火花內存表(不推蜂巢表到內存中)將數據插入,最後寫回到蜂巢表。

思想是寫作時避免磁盤IO為目標蜂巢表。有很多的insert語句,但我想寫回蜂巢表隻有在所有的執行結束。

你能請讓我知道如果這是可能的。請讓我知道如果你有更好的解決方案

感謝和問候,

~斯裏蘭卡

6個回答6

User16765128951
因素二世

1)使用sc.parallelize來創建表。

2)注冊隻是一個臨時表。

3)你可以繼續添加在這個表中插入語句。注意,SQL支持從其他表插入火花。所以,你可能需要創建臨時表插入臨時表。

這個表不應該寫出到磁盤,直到你運行一個“saveAsTable”或其他類型的命令。

維達

Sri1
新的貢獻者二世

嗨,維達,

抱歉遲到的回複。

我試著創建2類似的臨時表火花基於蜂巢表,1有數據另一個是空的

當我試著插入空表我得到以下錯誤

org.apache.spark.sql。AnalysisException:插入一個RDD-based表是不允許的。

如果有任何問題請糾正我這種方法。我試著完全一樣你說除了我的臨時表創建一個蜂巢表

問候,

~斯裏蘭卡

User16765128951
因素二世

明白了——使用UnionAll怎麼樣?我相信這個代碼片段:你想要的是什麼呢

從pyspark。sql進口行

數組=[行(值= 1)、行(value = 2),行(值= 3)]df = sqlContext.createDataFrame (sc.parallelize(數組)

array2 =[(值= 4)、行(值= 5)、行(值= 6)]df2 = sqlContext.createDataFrame (sc.parallelize (array2))

two_tables = df.unionAll (df2) two_tables.collect ()

> >[17]:[行(值= 1)、行(值= 2)、行(值= 3)、行(value = 4)、行(值= 5)、行(值= 6)]

Sri1
新的貢獻者二世

維達,

非常感謝你的幫助

工作不錯,但問題是我必須插入數據從多個查詢。我必須聲明的集合dataframes從每個查詢存儲數據結束時我可以聯盟所有dataframes和插入一個蜂巢表。

我試圖創建集合dataframe在scala中,我新的scala仍在苦苦掙紮

請讓我知道聲明的語法/數組dataframes集合

問候,

~斯裏蘭卡

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map