3-hadoop之数据仓库hive(三) Hive 基础应用

一、Hive基础概念

1.hive数据模型

每个库的下面呢有一些表,横向分区,纵向分桶

分区:每个分区都为一个物理文件夹,对于一个不在表中存在的字段进行分

区,即分区的字段为虚字段,在这种水平的分层后数据是完全物理

隔离的之间没有关系

分桶:各分桶相互独立,最终形成一个完整的数据块,分桶采用的是实字段

每个分桶即为一个文件,按字段的哈希值分桶

二、HiveSql

按数据操作分类,来分别说明脚本的使用

1.DDL

1.1建表说明

元数据:描述数据的数据

表分类:主要分为内表和外表

内表:元数据和数据本身均被hive所管理,删除表则全部被删除

外表:元数据被hive管理,数据本身存储在hdfs中,不受hive管

理。删除表则只删除元数据,数据本身不变。

区分内外表的关键字:external

查看已存在表的详细信息

show create table / desc tablename

更改表 alter table student rename to student2

增加字段 alter table student2 add columns (age int comment "新

增")

2.DML

加载数据脚本:LOAD DATA [LOCAL] INPATH 'filepath'

[OVERWRITE] INTO TABLE

tablename [PARTITION (partcol1=val1,

partcol2=val2 ...)

动态分区模式:(让分区成为变量)

脚本模板

insert overwrite table tablename

partition (partcol1[=var1],partcol2[=var2]...)

select_statement from from_statement

允许动态分区

set hive.exec.dynamic.partition=true;

设置非严格模式

set hive.exec.dynamic.partition.mode=nonstric;

多插入模式:

from student

insert overwrite table student partition(come_date='20170906')

select id,username,classid,classname where

come_date='20170905'

insert overwrite table student partition(come_date='20170907')

select id,username,classid,classname where

come_date='20170905'

3.join查询

inner join

将左表和右表满足联接条件的数据,全部查询出来

left outer join

以左表为主,将左表数据全部保留,没有关联上数据字段置成 NULL

right join

以右表为主,右表的数据全部保留,没有关联上额数据字段置成null

full outer join

没有关联上数据字段全部置成 NULL

4.union

union all

将所有表数据,完全叠加在一起,不去重。

union

将所有表数据,完全叠加在一起,总体去重。

要求:所有表的字段和类型完全一致

5.later view explode

通过 explode 将一行转换成多行,通过 lateral view 将多行转换成一个表

经典运用

猜你喜欢

转载自blog.csdn.net/Griezmann_7/article/details/84763644