Hive中库和表的常见操作

@

库的常见操作

1.增

 CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]  // 库的注释说明
  [LOCATION hdfs_path]        // 库在hdfs上的路径
  [WITH DBPROPERTIES (property_name=property_value, ...)]; // 库的属性

  
  create database  if not exists mydb2 
  comment 'this is my db' 
  location 'hdfs://hadoop101:9000/mydb2' 
  with dbproperties('ownner'='jack','tel'='12345','department'='IT');

2.删

drop database 库名: 只能删除空库
drop database 库名 cascade: 删除非空库

3.改

use 库名: 切换库
		
dbproperties: alter database mydb2 set dbproperties('ownner'='tom','empid'='10001');
同名的属性值会覆盖,之前没有的属性会新增

4.查

show databases: 查看当前所有的库
show tables in database: 查看库中所有的表
desc database 库名: 查看库的描述信息
desc database extended 库名: 查看库的详细描述信息

表的常见操作

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] //表中的数据要以哪种文件格式来存储,默认为TEXTFILE(文本文件)
					可以设置为SequnceFile或 Paquret,ORC等
[LOCATION hdfs_path]  //表在hdfs上的位置
  • 建表时,不带EXTERNAL,创建的表是一个MANAGED_TABLE(管理表,内部表)
  • 建表时,带EXTERNAL,创建的表是一个外部表!

外部表和内部表的区别是:

  • 内部表(管理表)在执行删除操作时,会将表的元数据(schema)和表位置的数据一起删除!
  • 外部表在执行删除表操作时,只删除表的元数据(schema),不会删除在hive上的实际数据。

在企业中,创建的都是外部表!在hive中表是廉价的,数据是珍贵的!

建表语句执行时:

  • hive会在hdfs生成表的路径;
  • hive还会向MySQl的metastore库中掺入两条表的信息(元数据)

管理表和外部表之间的转换:
将表改为外部表:

alter table p1 set tblproperties('EXTERNAL'='TRUE');

将表改为管理表:

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

注意:在hive中语句中不区分大小写,但是在参数中严格区分大小写!

2.删

drop table 表名:删除表

3.改

4.查

desc  表名: 查看表的描述
desc formatted 表名: 查看表的详细描述
posted @ 2020-10-01 21:42  孙晨c  阅读(322)  评论(0编辑  收藏  举报