Hive, 大数据

hive-04 DDL 增删改查库和表

创建数据库

CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];

创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db

create database db_hive

避免要创建的数据库已经存在错误,增加if not exists判断

create database if not exists db_hive2

创建一个数据库,指定数据库在HDFS上存放的位置

create database db_hive3
location '/db_hive3.db'

WITH DBPROPERTIES 建表的辅助属性 比如 作者、创建时间等

显示数据库

  • 显示数据库
show databases;

查看数据库详情

  • 显示数据库信息
desc database db_hive

显示数据库详细信息

desc database extended db_hive;

切换数据库

use db_hive;

修改数据库

  • 为某个数据库的DBPROPERTIES设置键值属性值
alter database db_hive set dbproperties ('createtime'='20210101')

查看修改结果

desc database db_hive extened db_hive

删除数据库

  • 删除空数据库
drop database db_hive

如果删除的数据库不存在,最好采用if exists判断数据库是否存在

drop database if exists db_hive

如果数据库不为空,可以采用cascade命令,强制删除

drop database db_hive cascade

创建表

  • 建表语法
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]
[tbproperties (property_name=property_value, ...)]
[as select_statement]
  • external 外部表
  • partitioned by 分区表
  • clustered by 分桶表
  • row format 定义行的格式
  • stored as 定义文件格式
  • tblproperties 额外属性

管理表(内部表)

  • 删除管理表是,hive也会删除这个表中的数据
  • 中间表,临时表会使用管理表,数据共享的其他表都用外部表

管理表与外部表的相互转换

  • 查询表的类型
desc formatted student
  • 修改内部表student为外部表
    • (‘EXTERNAL’=’TRUE’) 和 (‘EXTERNAL’=’FALSE’) 为固定写法,区分大小写!
alter table student set tblproperties('EXTERNAL'='TRUE');

查询表的类型

desc formatted student

修改外部表student为内部表

alter table student set tblproperties('EXTERNAL'='FALSE');

建表指定字段分隔符

create table test1 (
    id string,
    name string
)
row format delimited
fields terminated by ',';

修改表

  • 重命名表
alter table table_name rename to new_table_name

增加、修改、删除表分区

增加、修改、替换列信息

  • 更新列
alter table table_name change [column] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
  • 增加和替换列
    • add是代表新增一字段,字段位置在所有列后面(partition 列前)
    • replace 则是表示替换表中所有字段针对整个表
alter table table_name add|replace columns (col_name data_type [COMMENT col_comment], ...)

删除表

  • 管理表 元数据 hdfs数据都删除
  • 外部表 只删除元数据

drop table table_name;