最近公司在使用Hive做项目测试,所以就在Hive上面建了一些表,做测试。
使用建表语句后发现数据被自动覆盖了,现在了解到的情况是这样的。
Hive中,表的Metadata信息全部存储在MySQL中。
而存储在MySQL中的数据是没有校验过程的。
也就是说,你可以创建一个逻辑错误的表,两个表指向同一个HDFS文件也是有可能的。
所以,在使用CREATE TABLE的时候,LOCATION必须要指定成
Path/表名
如:
- create table choice(
- userid int,
- classname string)
- row format delimited fields terminated by '\t'
- LOCATION '/data/test01/dacoolbaby/choice'
- ;
否则在使用LOAD LOCAL DATA INPATH 命令加载本地数据的时候,
数据会互相覆盖。