06hive数据库表

目录内容
1~5关于数据库
6~8关于表(内部表、外部表)
9~10关于表(分区表)
11分区表与数据关联

1.创建数据库

1.1(默认位置)
	create database hive_db;
		在网页"node01:50070"中进入"/user/hive/warehouse/"可以看到建立的库
1.2(指定位置)
	create database hive_db2 location '/hive_data/hive_db2.db';
	create database hive_db3 location '/hive_data/basic.db';
		必须以"db"结尾,指定数据库名
1.3(不存在时创建)
	create database if not exists hive_db;
		在文件中执行时必须要写成这个标准模式

2.查询数据库

2.1 显示数据库
	show databases;
2.2 过滤显示查询的数据库
	show database like 'hvie*';

3.查看数据库

3.1 显示数据库信息
	desc database db_hive;
3.2 显示数据库详细信息
	desc database extended db_hive;

4.修改数据库

alter database hive_db set dbproperties('createtime'='20190806')
	数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置
	在hive中使用"desc database extended hive_db"可以查看附加的属性

5.删除数据库

5.1 删除空数据库
drop database hive_db;
5.2 删除前首先判断是否存在
drop database if exists hive_db;
5.3 对于数据库不为空可以强制删除
drop database hive_db cascade;

6.创建表(MANAGED_TABLE)

6.1 建表语法
	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]
6.2 普通创建表
create table if not exists student2(
id int,
name string
)
row format delimited fields terminsted by '\t'
stored as textfile
location '/user/hive/warehouse/student2';
6.3 将查询结果添加到新创建的表中
create table if not exists student3 as select id,name from studentt;
6.4 根据已存在表的表结构创建表
create table if not exists student4 like student;

7.修改表

7.1 重命名表
	alter table student_name rename to new_student_name;
7.2 添加列
alter table student_name add columns(address string);
		注:ADD是代表新增一字段,字段位置在所有列后面(partition列前)。
7.3 更新列
alter table student_name change column id moban_id string;
7.4 替换列
alter table student_name replace columns(name string, home string, loc string);
	注:REPLACE则是表示替换表中所有字段,partition列没有被替换。
7.5 删除表
drop table student_name;
7.6 清除表中数据
truncate table student;
	注意:Truncate只能删除管理表,不能删除外部表中数据	

8.外部表(EXTERNAL_TABLE)

8.1 理论
	删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。
8.2 查看表类型
	desc formatted student2;			
8.3 将管理表(内部表)(MANAGED_TABLE)与外部表(EXTERNAL_TABLE)互相转换
	alter table student set tblproperties('EXTERNAL'='TRUE')		tblproperties  external 
	alter table student set tblproperties('EXTERNAL'='FALSE')
8.4注意:
	('EXTERNAL'='TRUE')和('EXTERNAL'='FALSE')为固定写法,区分大小写!
	区分大小写!

9.分区表

9.1 创建分区表
create table stu_log(
sid int, 
sname string
)
partitioned by (month string)
row format delimited fields terminated by '\t';
9.2 加载数据到分区表
load data local inpath '/root/hivedata/student.txt' 
	into table default.stu_log partition(month='201908');
9.3 添加分区
alter table stu_log add partition(month="202001");
	同时添加多个分区,使用"空格"隔开
alter table stu_log add partition(month="202002") partition(month="202003");
9.4 删除分区
alter table stu_log drop partition(month='202001');
	同时删除多个分区,使用"逗号"隔开
alter table stu_log drop partition(month='202002') partition(month='202003');

9.二级分区表(二级目录)

9.5 创建二级分区
create table stu_log2(
sid int,sname string)
partitioned by (month string, day string)
row format delimited fields terminated by '\t';
9.6 加载数据到二级分区表
load data local inpath '/root/hivedata/student.txt'
	into table stu_log2 partition(month='203001',day='22');
9.7 查看分区表有多少分区
show partitions stu_log;

10.查询分区表

10.1 单分区查询
	select * from stu_log
10.2 多分区联合查询
	select * from stu_log where month='202001' or where month='202002';	
		或者
			select * from stu_log where month='001'
			union
			select * from stu_log where month='002';
10.3 将查询结果添加到新创建的表中
create table if not exists student3 as select id,name from studentt;	
Hive数据库优化可以从多个方面进行考虑。首先,可以通过合理的设计和数据加载方式来提高查询性能。例如,可以使用分桶技术来实现分桶Join,从而提高Join操作的性能。可以使用以下步骤来实现分桶Join优化: 1. 创建分桶:使用CREATE TABLE语句创建分桶,并指定分桶的数量和分桶的列。 2. 加载数据:使用LOAD DATA语句将数据加载到分桶中。 3. 执行Join操作:在查询语句中使用分桶进行Join操作,Hive会自动将Join操作转换为MapReduce任务,并利用分桶信息进行优化。 此外,还可以考虑使用索引来提高查询性能。在Hive中,索引可以建立在的某些列上,以提升一些操作的效率,例如减少MapReduce任务中需要读取的数据块的数量。但需要注意的是,Hive的索引与传统关系型数据库的索引有所不同,不支持主键或外键。 除了分桶和索引,还可以通过调整Hive的配置参数来优化查询性能。例如,可以增加MapReduce任务的并行度,提高查询的并发性能。可以调整内存分配参数,以提高查询的内存利用率。 总之,Hive数据库优化可以通过合理的设计、数据加载方式、分桶技术、索引和配置参数调整等多个方面来实现。 #### 引用[.reference_title] - *1* [Hive数据库概述](https://blog.csdn.net/wonderful_life_mrchi/article/details/106015228)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Hive性能优化之设计优化](https://blog.csdn.net/ZGL_cyy/article/details/121747932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hao难懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值