Hive常用DDL操作

一、Database

--显示所有数据库
show databases;
--使用指定数据库
USE database_name;

1.1 新建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name   --DATABASE|SCHEMA 是等价的
  [COMMENT database_comment] --数据库注释
  [LOCATION hdfs_path] --存储在 HDFS 上的位置
  [WITH DBPROPERTIES (property_name=property_value, ...)]; --指定额外属性
CREATE DATABASE IF NOT EXISTS hive_test
  COMMENT 'hive database for test'
  WITH DBPROPERTIES ('create'='heibaiying');

1.2 查看数据库信息

DESC DATABASE [EXTENDED] db_name; --EXTENDED 表示是否显示额外属性
DESC DATABASE  EXTENDED hive_test;

1.3 删除数据库

默认行为是 RESTRICT,如果数据库中存在表则删除失败。要想删除库及其中的表,可以使用 CASCADE 级联删除。

二、创建表

2.1 建表语法

file_format包括以下:

  • 文本格式 TEXTFILE

  • 序列化文件格式 SEQUENCEFILE

  • RC文件格式 RCFILE

  • ORC文件格式 ORC

  • AVRO文件格式 AVRO

  • Parquet文件格式 PARQUET

2.2 内部表

2.3 外部表

2.4 分区表

2.5 分桶表

2.6 倾斜表

通过指定一个或者多个列经常出现的值(严重偏斜),Hive 会自动将涉及到这些值的数据拆分为单独的文件。在查询时,如果涉及到倾斜值,它就直接从独立文件中获取数据,而不是扫描所有文件,这使得性能得到提升。

2.7 临时表

临时表仅对当前 session 可见,临时表的数据将存储在用户的暂存目录中,并在会话结束后删除。

2.8 CTAS创建表

支持从查询语句的结果创建表:

2.9 复制表结构

语法:

示例:

三、修改表

3.2 修改列

四、清空表/删除表

4.1 清空表

4.2 删除表

  • 内部表:不仅会删除表的元数据,同时会删除 HDFS 上的数据;

  • 外部表:只会删除表的元数据,不会删除 HDFS 上的数据;

  • 删除视图引用的表时,不会给出警告(但视图已经无效了,必须由用户删除或重新创建)。

Last updated