2012-11-24 50 views
8

沿下降外蜂巢表我使用蜂巢 - 如何與數據

drop table <table_name> 

如果我重新創建具有相同的架構和名稱表,我越來越老的數據備份。 我應該從hdfs文件系統中刪除表目錄以徹底擺脫數據嗎?

回答

1

無需去除,除非你HDFS目錄需要更多的HDFS空間。

如果你想更換新的數據,U只需要更換文件在HDFS。

如果妳想要使用的表名用於其他用途,然後刪除該表,並刪除該目錄中的HDFS。

其實,我覺得這是一個非常方便的功能,你可以改變你的表的模式(例如,你想改變字段名或CONCAT兩場一個字段)沒有丟失任何數據。

+1

我的問題是我需要擺脫數據,但重新創建具有相同名稱和模式的表? – amrk7

+4

刪除hdfs文件,刪除表;在hdfs中導入新文件並創建新表。 – pensz

2

雖然我pensz,略有改動同意,你不需要降表。只需用你想要的任何新文件替換外部hdfs文件(被替換的文件的結構應該是相同的),並且當你執行上一個表的select *時,你會注意到它會有新的數據而不是舊的一。

外部表基本上只表示該數據的模式和該文件的位置。您可以將許多文件添加到同一位置,並且您的表格將自動包含與這些文件相關的所有數據。同樣,您可以替換任何數據,並自動將您的表反映出來。

+1

但是,如果您的表格已分區,則需要稍作更改。我假設你的桌子不是。 –

+0

謝謝! tats很多信息 – amrk7

1

首先得到使用下面的命令表的路徑:

蜂巢>描述格式database_name.table_name;

然後複製其出現在描述中,例如整個位置: /user/hive/warehouse/database_name.db/table_name

此使用後以下命令從給定表截斷的所有數據:

***hive> dfs -rmr /user/hive/warehouse/database_name.db/table_name;*** 

OR

***hive> dfs -rm -r /user/hive/warehouse/database_name.db/table_name;*** 

然後你就可以完全清除它我們ing DROP TABLE命令。

0

,如果它是一個外部表,刪除表意味着你只是刪除方案

,所以你必須從HDFS

手動刪除該文件

或 創建新表,並給予不同的tbl屬性中的文件位置