1.hive支持四种数据模型
external table --外部表:hive中的外部表和表很类似,但是其数据不是放到,内部表可以指向任何目录,删除内部表hdfs目录不删除
table --内部表,hive的内部表指向的是以自己表名为目录的目录,建内部表时会在hdfs上自动生成目录
partition:分区表,要分区的字段也是一个字段,分区在hdfs上可以看到一个分区的目录
bucked
2.hive的数据类型
(1)基本数据类型包括
tinyint, smallint , int/integer, bigint, float , double , decimal ,boolean, binary
a 数字类型
分为整数类型,浮点数类型
b hive的字符串类型是
string,varchar,char
区别string尾部的空格会影响数据的判断
varchar尾部的控股会作为字符串的一部分,会影响字符串的比较
char是固定长度,尾部的空格不影响字符串的比较
c 日期与时间戳
timestamp格式为YYYY-MM-DD hh:mm:ss.fffffffff
Date格式YYYY-MM-DD格式的日期,其余写法都是错的,
如果要带上时分秒,就使用timestamp
(2) hive中的复杂类型
struct(结构)-->字段存储对象
struct类似于java的类变量使用,Hive中定义的struct类型也可以使用点来访问,
从文件加载数据时,文件里的数据分隔符要和建表指定的一致
3.hive的严格校验模式设置参数set hive.mapred.mode=strict;
设置严格模式可以限制以下几种情况:
(1)限制执行可能形成笛卡儿积的SQL
(2)partition表使用时不加分区;
(3)order by全局排序的时候不加limit的情况;
4.hive的一些命令
修改表: alter table s1 rename to s2;
给表添加分区: alter table aaa add if not exists partition (dt = '20141117') location '20141117' partition (dt='20141228') location '20141228';
查看表的详细信息:show create table aaa;
查看表结构(字段): desc aaa;