Hive外部表默认存储位置:本地文件移入对应HDFS路径可行性确认
关于Hive外部表添加本地文件的问题解答
当然可以将符合格式的本地文本文件上传到你指定的HDFS路径 <hdfs-uri>/hive/warehouse/testtable/ 下,Hive外部表的核心特性就是数据存储在用户指定的外部路径中,Hive仅维护表的元数据信息,所以只要文件格式匹配,Hive就能直接读取这些数据。
需要注意的几个关键点:
文件格式必须匹配建表规则
你的建表语句指定了字段用逗号分隔(FIELDS TERMINATED BY ','),且存储为文本格式,所以本地的test.txt文件必须满足每行数据是id,name的格式(比如1,Alice),否则查询时会出现数据解析错误。正确上传文件到HDFS
你需要用HDFS命令将本地文件上传到目标路径,而不是直接“移动”(本地文件到HDFS是上传操作),命令示例:hdfs dfs -put /本地路径/test.txt <hdfs-uri>/hive/warehouse/testtable/如果希望上传后删除本地文件,可以加
-move参数:hdfs dfs -moveFromLocal /本地路径/test.txt <hdfs-uri>/hive/warehouse/testtable/权限与数据识别
- 确保Hive运行的用户对该HDFS路径有读权限,否则会出现查询时权限不足的报错。
- 上传文件后,大部分Hive版本会自动识别新增的文件,但如果遇到数据无法查询的情况,可以执行以下命令刷新表元数据:
MSCK REPAIR TABLE testtable;
外部表与内部表的区别
不同于内部表(管理表),外部表删除时不会删除HDFS路径下的实际数据,这也是外部表适合存储已有数据或需要与其他系统共享数据的原因。
内容的提问来源于stack exchange,提问作者Zombie
相关产品推荐
相关产品推荐

