Hadoop之Hive数据库和表的增删改查(DDL)
作者:互联网
Hive QL 是Hive支持的类似SQL的查询语言。Hive QL大体可以分为DDL、DML和UDF语言。DDL语言主要是创建数据库、创建表、数据库和表的删除;DML主要进行数据的添加、查询;UDF支持用户定义查询函数。
这里写目录标题
本文主要介绍DDL语言
数据库和数据库表的增删改查!
1.1 创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name --判断是否存在
[COMMENT database_comment]--注释
[LOCATION hdfs_path]--存储数据的路径
[WITH DBPROPERTIES (property_name=property_value, ...)];
给大家展示一下建表语句:
创建一个数据库,数据库的默认存储位置在/user/hive/warehouse/*.db。
下面是一些常用的创建数据库的命令。
create database db_hive;--简单创建一个数据库
create database db_hive2 location '/database.db';--在根目录下创建一个数据库
use db_hive;--进入该数据库
1.2 查询数据库
- 显示所有数据库
show databases;
- 利用like关键字过滤数据库
show databases like 'db_hive*';
- 查看数据库详情
desc database hive2; --显示一部分信息
desc database extended hive2; --显示额外的信息
1.3 修改数据库属性
ALTER DATABASE 命令为某个数据库的 DBPROPERTIES 设置键-值对属性值,来描述这个数据库的属性信息.
- 修改数据库的创建时间
alter database hive
set dbproperties('createtime'='20210430');
1.4 删除数据库
- 删除空数据库(只能删除空的数据库)
drop database hive2;
drop database if exists db_hive2;--最好采用是否存在判断一下
删除非空会报错!
- 删除非空的数据库(加入cascade强制删除)
drop database hive2 cascade;
成功删除!
1.5 创建表
- 创建表的语法
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]--表的存储位置
[TBLPROPERTIES (property_name=property_value, ...)]--额外的属性
[AS select_statement]--通过查询其他表的方式建表
- 外部表和管理表
外部表通过EXTERNAL关键字指定。
外部表:删除该表并不会删除HDFS上的数据,但数据库中表的元数据信息会被删除掉。
管理表:当我们删除一个管理表时,Hive 也会删除这个表中数据。
实例:创建一个外部表给它数据然后删除它。
该数据还存在。
- 外部表和管理表的互相转换
-- 查询表的类型
desc formatted 表名;
--将管理表转化为外部表
alter table 表名 set tblproperties('EXTERNAL'='TRUE');
--将外部表转化为管理表
alter table 表名 set tblproperties('EXTERNAL'='FALSE');
- 创建表时,最好指定分隔符
CREATE TABLE test01(id int,name string)
row format delimited fields terminated by ',';
1.6 修改表
- 重命名表
--重命名语法
ALTER TABLE 表名 RENAME TO 新的表名;
-- 例子
alter table test01 rename to test05;
- 增加、修改、替换列的信息
更新列
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name
column_type [COMMENT col_comment] [FIRST|AFTER column_name]
--将test01 id那一列转换为string类型并重命名为stu_id
alter table test01 change id stu_id string;
修改类型成功
--将test01 stu_id那一列重命名为id 但也需要指定数据类型
alter table test01 change stu_id id string;
重命名成功
增加和替换列
ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
--增加 一列
alter table test01 add columns(name strings);
ADD增加一列成功
--replace 替换表的列
alter table test01 replace columns (stu_id string);
replace可以将指定列转化为重命名为其他列,可以将2列命名为1列(会只显示一列的原因只是元数据修改了,hdfs中并未修改)
我们再将表的列名重新设置为2个,数据又回来了。这里可以说明,replace只是改变了元数据的列数,并不会改变HDFS的列数。
ADD 是代表新增一字段,REPLACE 则是表示替换表中所有字段
1.7 删除表
drop table 表名;
到这里Hive的DDL语言就学习完了,主要是对数据库和数据库中的表进行增删改查的工作。下一章介绍DML语言,大家敬请期待!
参考资料
《大数据Hadoop3.X分布式处理实战》
标签:name,database,--,数据库,改查,Hadoop,和表,table,col 来源: https://blog.csdn.net/weixin_48077303/article/details/116276245