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
查询的结果如
#创建外部表
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;
#查询表的详细信息
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的建分库表语言
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分为四个表
#由于之前分为四个桶表 故抽取 4/y个数据,从x开始
select * from stu_buck tablesample(bucket x out of y on id);
以上是关于hive的建表,及分区表和分桶表的基本操作的主要内容,如果未能解决你的问题,请参考以下文章