天天看点

《hive编程指南》阅读笔记摘要(八)

第9章 模式设计

1、按天划分的表建议使用分区表

2、HDFS namenode会将所有的文件系统的元数据信息加载到内存中

3、hive没有主键或基于序列秘钥生成的自增键的概念

4、为了避免分区中数据不均的问题,可以用另一种数据分管的技术:分桶

create table weblog(user_id int, url string, source_id string)

partitioned by (dt string)

clustered by (user_id) into 96 buckets;

但是,要将数据正确的插入到表的过程完全取决于用户自己!!!

5、怎么使用分桶插入数据?

(1)、为分桶设置正确的reducer个数

set hive.enforce.bucketing = true;

(2)、插入数据

from raw_logs

insert overwrite table weblog

partition (dt='2009-02-25')

select user_id,url,source_ip where dt='2009-02-25';

6、分桶的优点:

(1)、因为桶数量是固定的,所以他没有数据波动;

(2)、桶对抽样非常适合;

(3)、分桶有利于执行高效的map-side join

7、为表增加字段,例子:

alter table weblogs add columns (user_id string);

8、hive通常使用行式存储,不过hive也提供了一个列式SerDe来以混合列式格式存储信息。某些数据集使用列式存储是最优的,如某些列重复数据特别多时,使用列式存储会加快查询速度。

9、在大多数情况下,都应该使用数据压缩

*****************************

微信公众号:IT人成长关注

大数据技术QQ群:485681776