2012-11-24 71 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属性中的文件位置