hive建表及表操作

HIVE 建表及对表基本操作

建表的三种形式

1.直接建表
create [external] table [if not exists] tab_name
( row_1 type,
row_2 type )
partition by (row_3 type,type_4 type )
row format delimited fields terminated by ’ a’
stored as b location 'c ';

[external] ;设置为外部表,不设置时候,默认为内部表
[if not exists]:这个防止表已经存在是报异常
partition by :设置分区字段
a:设置列的分隔符(不设置默认为‘、001’)
b:为表的存储文件格式(不设置默认txt格式)
c:为数据存储存储路径(不设置默认为系统设置路径)

2.查询建表法
create [external] table [if not exists] tab_name
row format delimited fields terminated by ’ a’
stored as b location 'c ’
as
select name_1,name_2,name3 from tab_name2;

[external] ;设置为外部表,不设置时候,默认为内部表
[if not exists]:这个防止表已经存在是报异常
a:设置列的分隔符(不设置默认为‘、001’)
b:为表的存储文件格式(不设置默认txt格式)
c:为数据存储存储路径(不设置默认为系统设置路径)

注意:查询建表法与其他两种建表法有一个不同点,它会把查询的到的数据一并加载到建的表中

3.like建表法
create [external] table [if not exists] tab_name like tab_2
row format delimited fields terminated by ’ a’
stored as b location 'c ';
[external] ;设置为外部表,不设置时候,默认为内部表
[if not exists]:这个防止表已经存在是报异常
a:设置列的分隔符(不设置默认为‘、001’)
b:为表的存储文件格式(不设置默认txt格式)
c:为数据存储存储路径(不设置默认为系统设置路径)

注意:like建标法只会复制tab_2的表字段及字段类型,不会复制数据

4.一些对hive表的基本操作
desc tab_name --查看表字段
desc formatted tab_name --查看表结构

alter table tab_name add columns (col_name ,type comment ‘字段含义’);–给表添加的新的列(在给分区表添加列时候是在除去分区列的最后一行添加)

最后说一下我们写hql常用到的over()函数

–按col_name进行分组,然后按照col_name 降序排序(不考虑是否有相同的)

rank() over(distribute by col_name sort by col_name desc) --按col_name进行分组,然后按照col_name 降序排序(考虑相同的,但是会跳跃 例如 1,2,2,4)

dense_rank() over(distribute by col_name sort by col_name desc) --按col_name进行分组,然后按照col_name 降序排序(考虑相同的,不会跳跃 例如 1,2,2,3)

在介绍下partition与distribute的差别
distribute 是在map端进行分组将相同的放入同一个reduce中
partiton 是在结束后对所有的数据进行分组
一般该语法在表去重是使用的比较多

你可能感兴趣的:(hive建表及表操作)