1.HIve是一个基于Hadoop的数据仓库
2.HIve是高延迟的,如果要低延迟用HBase。Hive不能对表数据进行更新、删除、插入,只能追加或重新导入。
3.Hive可以建立索引,索引本身就是一张表,索引并不能提高性能,只能减少资源消耗。如果资源充足,不用考虑。
4.如果要提高查询速度可以考虑分区与俑。
5.hive本身不存储数据与计算。完全依赖于HDFS与Mapreduce,Hive只是一个逻辑表。
内外表区别:
1.删除内表时,内表数据会一并删除;
2.删除外表时,外表数据依旧存在。
分区与桶理解:
1.分区是表下的一个目录,多分区就是表下游多个目录。分区的作用就是辅助查询、减少查询范围。select查询时会扫描整表内容,有时我们只关注的部分数据,这是就可以使用分区。
例如:
a、单分区建表语句:create table day_table (id int, content string) partitioned by (dt string);单分区表,按天分区,在表结构中存在id,content,dt三列。这是实际数据存储会按天分区。(按天生成文件夹)
b、 双分区建表语句:create table day_hour_table (id int, content string) partitioned by (dt string, hour string);双分区表,按天和小时分区,在表结构中新增加了dt和hour两列。
先以dt为文件夹,再以hour子文件夹区分
2.对于每一个表或者分区都可以进一步组织成桶。桶可以提高某些查询的效率如Jion,提高某些查询的效率
分桶其实就是把大表化成了“小表”,然后 Map-Side Join 解决之。