2015-12-02 47 views
0

我是新來的spark。我們試圖使用Hive JDBC訪問由Spark的RDD註冊的臨時表。我們可以通過執行代碼獲得RDD首次工作如下:Spark DataFrame.registerTempTable不更新jdbc配置單元中的臨時表

dt.registerTempTable("Table1"); 
dt.cache(); 
HiveContext hc = HiveContextManager.getInstance(); // a singlton HiveContext instance 
hc.registerDataFrameAsTable(dt, "Table1"); 
hc.cacheTable("Table1"); 
dt.cache(); 
dt.collect(); 
HiveThriftServer2.startWithContext(hc); 

然而,當我們得到新的RDD數據進來,並嘗試更新臨時表中,我看不到在蜂巢JDBC的新紀錄(在jdbc:hive2命令行中運行「Table1中的select count(*)」會得到相同的數字)。代碼如下:

DataFrame tempDT = currentDT.unionAll(newDT);   
HiveContext hc = HiveContextManager.getInstance();  
hc.uncacheTable("Table1"); 
tempDT.registerTempTable("Table1"); 
hc.cacheTable("Table1"); 

任何人有什麼想法?請幫忙。非常感謝。

回答

-2

事實證明RegisterTempTable的作品完美。在我們創建newDT的時候,這是一個問題。謝謝。

+0

你是如何解決它的? – user1158559