Hive DDL操作合集

关于Hive官方对DDL语言的说明,可以参见此页

一、数据库操作

1.1 创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];
  • DATABASE 和 SCHEMA 是一样的,任选其一。
  • IF NOT EXISTS 表示该表不存在则创建。
  • COMMENT 执行该库的注释。
  • LOCATION 指定该库在HDFS上的路径。
  • WITH DBPROPERTIES 通过键值对的方式指定其它配置项。

1.2 显示所有数据库

SHOW (DATABASES|SCHEMAS) [LIKE 'identifier_with_wildcards'];
  • DATABASE 和 SCHEMA 是一样的,任选其一。
  • LIKE 字段可选,其允许使用正则表达式的方式对数据库列表进行过滤,如:show databases like 'stu*';

1.3 查看数据库信息

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

1.4 切换当前数据库

use new_db;

1.5 删除数据库

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
  • DATABASE 和 SCHEMA 是一样的,任选其一。
  • IF EXISTS 表示存在才删除,否则会报错。
  • 默认的删除行为是 RESTRICT,如果数据库不为空则不会删除;指定为 CASCADE 会强制删除。

1.6 更改表属性

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...);  
 
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;  
  
ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path;

用户可以使用 ALTER DATABASE 命令为某个数据库的 DBPROPERTIES 设置键-值对属性值,来描述这个数据库的属性信息。

二、表操作

2.1 创建表

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    
  [(col_name data_type [column_constraint_specification] [COMMENT col_comment], ... [constraint_specification])]
  [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]
  [SKEWED BY (col_name, col_name, ...)                  
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
     [STORED AS DIRECTORIES]
  [
   [ROW FORMAT row_format] 
   [STORED AS file_format]
     | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)]  
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]   
  [AS select_statement];
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  LIKE existing_table_or_view_name
  [LOCATION hdfs_path];
  • TEMPORARY 指定是否创建临时表,已创建为临时表的表仅对当前会话可见。数据将存储在用户的临时目录中,并在会话结束时删除。临时表有两个限制:不支持分区列;不支持创建索引。
  • EXTERNAL 可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION),Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
  • COMMENT 指定注释。
  • PARTITIONED BY 创建分区表。
  • CLUSTERED BY 创建分桶表。
  • STORED AS 指定存储文件类型常用的存储文件类型:SEQUENCEFILE(二进制序列文件)、TEXTFILE(文本)、RCFILE(列式存储格式文件)。如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。
  • LOCATION 指定表在HDFS上的存储位置。
  • LIKE 允许用户复制现有的表结构,但是不复制数据。

2.2 修改表

2.2.1 重命名

ALTER TABLE table_name RENAME TO new_table_name;

2.2.2 更新列

ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type
  [COMMENT col_comment] [FIRST|AFTER column_name] [CASCADE|RESTRICT];

如:

alter table dept_partition change column deptdesc desc int;

2.2.3 增加 / 替换列

ALTER TABLE table_name 
  [PARTITION partition_spec]                
  ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)
  [CASCADE|RESTRICT]

如:

alter table dept_partition replace columns(deptno string, dname string, loc string);

2.3 删除表

DROP TABLE [IF EXISTS] table_name [PURGE];
  • 内部表会同时删除元数据和HDFS上的数据,外部表只会删除元数据。删除视图引用的表时,不会给出警告(但视图已经无效了,必须由用户删除或重新创建)。

2.4 清空表

TRUNCATE TABLE table_name [PARTITION partition_spec];
  • 目前只有内部表才能执行 TRUNCATE 操作,外部表执行时会抛出异常 Cannot truncate non-managed table XXXX
  • 当进行truncate操作时将会从一个表或者分区中删除所有的行,用户可以通过指定partition_spec删除多个分区,省略partition_spec将会删除表中的所有分区。

2.5 查看所有表

show tables;

2.6 查看表信息

DESCRIBE [EXTENDED|FORMATTED] table_name;

 

点个赞呗:程序员虾说 » Hive DDL操作合集

赞 (0) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

请作者喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏