上一篇介绍了hive的架构,以及hive语句执行的过程。
这篇介绍hive的文件存储和基本数据类型。
Hive是hdfs上的数据仓库,而hdfs上存放的都是文件,所以hive中的表可以理解为对hdfs上文件的映射。
看完下面的介绍,相信你能很清楚的理解:“hive中的表就是hdfs的文件”这句话。
一,hive的文件存储
默认hive仓库的路径为/user/hive/warehouse/database.db/
使用hadoop dfs –ls /user/hive/warehouse/database.db/ 命令,可以查看该数据仓库下所有的表:
第一列为权限,第二列是用户,第三列用户组,第四列大小(此处不显示,需要再进一层目录),第五列为创建时间,第六列为hdfs上具体目录。
hive库中每个表都会在/user/hive/warehouse/database.db/下有相应目录。
找个表进去看:
可以看到,这时第四列有大小了。第一行是标识位,另外几行是hive自动把表分成了几份文件。如果将其中一个part删掉,相应的该表数据量会减少。
如果把其中一个part再load一份,相应的表数据又会增加。(可以先把文件get到本地,再put进去,或者建一个备份表,把备份表的文件移动过去或者使用load命令)
注:如果相同文件,hive会自动给文件命名为copy。
所以如果你不小心把hdfs上相应的表文件全部删掉了,就相当于在hive中执行了truncate table操作。
2、Hive建表语句:
CREATE TABLE IF NOT EXISTS table_name
(
company_name String comment '公司名称',
company_id String comment '公司ID'
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY'\t'
LINES TERMINATED BY '\n';
stored as textfile;最后几句分别代表,指定列分隔符为制表符,行分隔符为\n,并且该表文件在hdfs中存储格式为text格式。
3、load命令
可以直接将linux本地文件load到hive表中,只要保证文件类型、列分隔符和行分隔符与建表时指定的一致。
具体语句:
load data local inpath '文件名' into table tablename;
假设文件不在本地,则不需要local关键字。4、hive的基本数据类型
|
数据类型 |
所占字节 |
开始支持版本 |
|
TINYINT |
1byte | |
|
SMALLINT |
2byte | |
|
INT |
4byte | |
|
BIGINT |
8byte | |
|
BOOLEAN | ||
|
FLOAT |
4byte单精度 | |
|
DOUBLE |
8byte双精度 | |
|
STRING | ||
|
BINARY |
|
从Hive0.8.0开始支持 |
|
TIMESTAMP |
|
从Hive0.8.0开始支持 |
|
DECIMAL |
|
从Hive0.11.0开始支持 |
|
CHAR |
|
从Hive0.13.0开始支持 |
|
VARCHAR |
|
从Hive0.12.0开始支持 |
|
DATE |
|
从Hive0.12.0开始支持 |
下一篇具体介绍复杂类型的使用。
本文详细介绍了Hive中的文件存储方式及基本数据类型。解释了Hive如何映射HDFS上的文件,包括表的存储位置、文件组织形式以及如何通过Hive命令加载数据。此外,还列举了Hive支持的各种数据类型及其占用的空间。
1863

被折叠的 条评论
为什么被折叠?



