我使用以下方法在 Hive
中创建了一个外部表:
create external table hpd_txt(
WbanNum INT,
YearMonthDay INT ,
Time INT,
HourlyPrecip INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
stored as textfile
location 'hdfs://localhost:9000/user/hive/external';
现在该表已在位置 */hive/external
中创建。
第 1 步:我使用以下方法在此表中加载数据:
load data inpath '/input/hpd.txt' into table hpd_txt;
数据成功加载到指定路径(*/external/hpd_txt
)
第 2 步: 我使用以下方法从 */hive/external
路径中删除表:
hadoop fs -rmr /user/hive/external/hpd_txt
问题:
- 为什么从原来的路径中删除了表? (
*/input/hpd.txt
从 hdfs 中删除,但在*/external
路径中创建表) - 按照第 2 步从 HDFS 中删除表后,我再次使用 show tables;它仍然在外部路径中提供表 hpd_txt。 那么这是从哪里来的。
提前致谢。
最佳答案
Hive 不知道您删除了这些文件。 Hive 仍希望在您指定的位置找到文件。你可以在 HDFS 中做任何你想做的事,这不会传达给配置单元。如果事情发生变化,你必须告诉 hive 。
hadoop fs -rmr /user/hive/external/hpd_txt
例如,上面的命令不会删除表,它只会删除文件。该表仍然存在于配置单元元存储中。如果要删除表,请使用:
drop if exists tablename;
由于您将表创建为外部表,这将从配置单元中删除该表。如果您没有删除文件,这些文件将保留下来。如果要删除外部表和该表正在读取的文件,您可以执行以下操作之一:
- 放下表格,然后删除文件
- 将表更改为托管并删除表
最后,hive 的 metastore 位置默认位于此处 /usr/hive/warehouse
。
关于hadoop - 默认情况下,HIVE 元数据存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32403289/