Hive与HDFS的使用方法及内部表删除后HDFS数据是否删除
Hive与HDFS相关问题解答
1. 如何将Hive与HDFS配合使用?
- 配置Hive关联HDFS:确保Hive配置文件
hive-site.xml中正确设置HDFS NameNode地址,比如配置fs.defaultFS参数指向集群地址(如hdfs://namenode-host:9000),Hive启动后默认使用该HDFS作为存储后端。 - 创建关联HDFS的表:
- 内部表:默认存储在HDFS的
/user/hive/warehouse/下对应库表目录,无需额外指定路径。 - 外部表:通过
LOCATION关键字手动指定HDFS路径,示例:CREATE EXTERNAL TABLE employee (id INT, name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LOCATION 'hdfs://namenode-host:9000/user/data/employee/';
- 内部表:默认存储在HDFS的
- 加载数据关联Hive表:
- 直接将数据文件上传到HDFS对应表路径,Hive会自动识别(需数据格式与表定义匹配)。
- 用Hive命令加载本地数据到HDFS表路径,示例:
LOAD DATA LOCAL INPATH '/local/path/employee.csv' INTO TABLE employee;
- 操作HDFS数据:Hive的查询、插入等操作底层都是处理HDFS上的数据,比如
INSERT INTO TABLE employee VALUES (1, 'Alice')会把数据写入对应HDFS目录。
2. Hive内部表执行DROP TABLE后,HDFS数据是否会被删除?
是的。内部表(未加EXTERNAL关键字的表)的元数据(存于Metastore)和HDFS数据都由Hive统一管理。执行DROP TABLE命令时,Hive会同时删除Metastore中的表元数据,以及该表对应的HDFS目录和所有数据。
补充:如果是外部表,执行DROP TABLE只会删除元数据,HDFS上的数据会保留。
内容的提问来源于stack exchange,提问作者Saurav Sharma
相关产品推荐
相关产品推荐

