hive的建表,及分区表和分桶表的基本操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive的建表,及分区表和分桶表的基本操作相关的知识,希望对你有一定的参考价值。


几条hive常用命令

#查询数据库详细信息
desc database extended db_hive;
#强制删除数据库
drop database db_hive cascade;
#hive的数据导入
create table test(
name string,
friends array<string>,
children map<string, int>,
address struct<street:string, city:string>
)
row format delimited fields terminated by ,
collection items terminated by _
map keys terminated by :
lines terminated by \\n;

row format delimited fields terminated by ‘,’ 每行以 ,分割
collection items terminated by ’ array集合以’‘分割
map keys terminated by ‘:’ kv以’:‘分割
lines terminated by ‘\\n’; 每行以’\\n’分割
数据集如

songsong,bingbing_lili,xiao song:18_xiaoxiao song:19,hui long guan_beijing
yangyang,caicai_susu,xiao yang:18_xiaoxiao yang:19,chao yang_beijing

查询的结果如

hive的建表,及分区表和分桶表的基本操作_导入数据

#创建外部表
create external table if not exists default.dept(
deptno int,
dname string,
loc int
)
row format delimited fields terminated by \\t;

外部表和内部表的区别在于 删除外部表不会删除存在hdfs的数据

#外部表和内部表的互换(设置为外部表为true)
alter table student2 set tblproperties(EXTERNAL=TRUE);
#创建分区表
create table dept_partition(
deptno int, dname string, loc string
)
partitioned by (month string)
row format delimited fields terminated by \\t;
#导入数据集合 month=201707代表的是分区
load data local inpath /root/hivedata/dept.txt into table default.dept_partition partition(month=201707);
#导入数据集合 month=201709代表的是分区
load data local inpath /root/hivedata/dept.txt into table default.dept_partition partition(month=201707);
10  ACCOUNTING  1700
20 RESEARCH 1800
30 SALES 1900
40 OPERATIONS 1700
#查询
select * from dept_partition;

hive的建表,及分区表和分桶表的基本操作_hive_02

#查询表的详细信息
desc extended dept_partition;
#添加列
alter table dept_partition add columns(deptdesc string);
#修改列(包括整列替换)
alter table dept_partition change column deptdesc desc int;
#替换列
alter table dept_partition replace columns(deptno int);
#删除表
drop table dept_partition;

替换列后只有deptno和分区信息

hive的建表,及分区表和分桶表的基本操作_外部表_03

#hive的建分库表语言
create table stu_buck(id int, name string)
clustered by(id)
into 4 buckets
row format delimited fields terminated by \\t;

导入数据

1001  ss1
1002 ss2
1003 ss3
1004 ss4
1005 ss5
1006 ss6
1007 ss7
1008 ss8
1009 ss9
1010 ss10
1011 ss11
1012 ss12
1013 ss13
1014 ss14
1015 ss15
1016 ss16

可以看到根据id分为四个表

hive的建表,及分区表和分桶表的基本操作_外部表_04

#由于之前分为四个桶表 故抽取 4/y个数据,从x开始
select * from stu_buck tablesample(bucket x out of y on id);

hive的建表,及分区表和分桶表的基本操作_外部表_05


以上是关于hive的建表,及分区表和分桶表的基本操作的主要内容,如果未能解决你的问题,请参考以下文章

分区表和分桶表

架构师之路Learn Day7之Hive生产环境最佳实践

入门大数据---Hive分区表和分桶表

大数据技术之Hive查询分区表和分桶表

大数据技术之Hive查询分区表和分桶表

分区表和分桶表