我們的羣集具有Spark 1.3和Hive 有一個大的Hive表格,我需要隨機添加選定的行。 有一個小表,我閱讀並檢查一個條件,如果條件爲真,那麼我抓住我需要的變量,然後查詢隨機行來填充。我所做的就是在該條件下進行查詢,table.where(value<number)
,然後使用take(num rows)
將其設置爲數組。然後,由於所有這些行都包含我需要的信息,因此需要從大型配置表格中選擇哪些隨機行,我遍歷數組。遞增添加到具有Scala + Spark 1.3的Hive表格
當我執行查詢時,我在查詢中使用ORDER BY RAND()
(使用sqlContext
)。我創建了一個var Hive table
(可變),從大表中添加一列。在循環中,我做unionAll newHiveTable = newHiveTable.unionAll(random_rows)
我已經嘗試了很多不同的方法來做到這一點,但我不知道什麼是避免CPU和臨時磁盤使用的最佳方法。我知道Dataframes不適用於增量式添加。 我現在要嘗試的一件事是創建一個cvs文件,在循環中遞增地將隨機行寫入該文件,然後當循環結束時,將cvs文件作爲表加載,然後執行一個unionAll以獲得我的決賽桌。
任何反饋將是偉大的。由於
你必須移動到最近的星火版本的選擇呢?那麼你可以這樣做:'yourDataFrame.writer().mode(SaveMode.Append).saveAsTable(「YourTableName」' – user1314742
它不會到下個月才升級到Spark 1.5 – KBA