HIVE

目标不同,设计需求就不同
业务仓库需要考虑三范式
数据仓库不用三范式,用宽表,以空间换时间

星型模型 把所有事实放在一个表里面,关联维度力度表

hive是局域hadoop的一个数据仓库,将结构化的数据文件映射为一张数据表,提供SQL查询功能,封装了mapreduce
这里写图片描述

HIVE将SQL语言编译为MapReduce,然后放在YARN里面执行
MySQL里面存储的是HIVE的配置信息,比如字段之间是用什么分隔符来分割的
HDFS里面保存了要处理的数据
简单的可以理解为HIVE就是将SQL语言转换为了MapReduce,其操作的并不是真实的数据包,还是原始的数据。

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format] 
[STORED AS file_format]
[LOCATION hdfs_path]

外部表

create external table t_test(id int,name string) \
row format delimited fields terminated by ‘\t’ \
stored as testfile \
location ‘/dir03’

load data local impath ‘/home/hadoop/test’ into table t_test

drop外部表时,原始数据不会被删除,内部表则会删除

建立分区表

create table t_test(id int,name string) \
partitioned by (class string) \
row format delimited \
fields terminated by ‘,’

load data local inpath ‘/home/hadoop/test’ into table t_test partition(class=yi)
在导入数据的时候会自动建立分区
在查询数据的时候会把分区字段加入
select count(1) from t_test where class=yi

分桶

分桶其实就是设置partioner,所以要合理的设置reducetask。它的作用是提高join的效率
create table t_test(id string,name string) \
clustered by (id) sort by (id) into 4 buckets;

insert into table t_test
select id,name from t_buck cluster by (id) in to t_test
show databases
use database_name
show tables
desc t_test
desc extended t_test
desc formatted t_test
tr

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值