2014-03-25 61 views
2

我是一個hadoop &配置單元的新手。我想刪除數據庫中的某些行 - 這是在hive-hadoop上。我知道它不支持開箱即用,而且hadoop是隻讀文件系統。我很好奇什麼是完成這個最好的方法。如果以前有人這樣做,他們可以分享他們的學習/程序嗎?如何刪除配置單元hadoop數據庫中的行

謝謝!

+0

可能的重複[如何刪除和更新Hive中的記錄](http:///stackoverflow.com/questions/17810537/how-to-delete-and-update-a-record-in-hive) – Neels

+0

你應該看看這個http://stackoverflow.com/questions/17810537/how-to-刪除和更新-A-記錄在蜂箱 – Neels

回答

3

最好的方法是對數據進行分區,以便您要刪除的行在自己的分區中。然後,您可以刪除該分區而不影響表格的其餘部分。這是一個相當可持續的模式,即使您的數據集變得相當大。

10

在大數據中確實沒有刪除。也就是說,如果它不是太大,你可以覆蓋你的表或分區,或者像JamCon建議的那樣將你的刪除隔離到一個特定的分區。

對於數據集這是不是太龐大,你可以這樣做

INSERT OVERWRITE TABLE mytable 
SELECT * FROM mytable 
WHERE ID NOT IN ('delete1', 'delete2', 'delete3'); 
1

或者你可以插入的行(即那些你想保留)的其餘部分到另一個表中,然後刪除舊的表。

2

INSERT OVERWRITE TABLE mytable SELECT * FROM mytable WHERE 1 = 0;

上面的查詢首先刪除數據文件,因爲在查詢中指定了覆蓋選項。 接下來它將執行SELECT從表中讀取記錄,條件失敗時,SELECT查詢將爲零記錄並將零記錄插入到表中

相關問題