04--Hive的DDL数据定义

1.1 创建数据库

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 if not exists shive
comment 'study hive'
location '/shive'
with dbproperties('creator'='jred','date'='2019-04-05');

---查看数据库信息
hive (default)> desc database shive;
OK
db_name	comment	location	                        owner_name	owner_type	parameters
shive	study hive	  hdfs://hadoop11:9000/shive	root	         USER	
Time taken: 0.013 seconds, Fetched: 1 row(s)

---查看更详细信息
hive (default)> desc database extended shive;
OK
db_name	comment	location	owner_name	owner_type	parameters
shive	study hive	hdfs://hadoop11:9000/shive	root	USER	{date=2019-04-05, creator=jred}
Time taken: 0.011 seconds, Fetched: 1 row(s)

1.2 修改数据库

数据库的其他元数据信息都是不可更改的,只能修改描述信息,包括数据库名和数据库所在的目录位置。

alter database shive set dbproperties('creator'="hive")

在这里插入图片描述

1.3 删库--记得买机票

--空库可以直接删除,采用 if exists判断数据库是否存在
drop database if exists shive;

--数据库不为空,可以采用cascade命令,强制删除
drop database if exists shive cascade;

2.1 建表

•CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常
•EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)
•LIKE 允许用户复制现有的表结构,但是不复制数据
•COMMENT可以为表与字段增加描述
•PARTITIONED BY 指定分区
•ROW FORMAT 
  DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char] 
    MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] 
    | SERDE serde_name [WITH SERDEPROPERTIES 
    (property_name=property_value, property_name=property_value, ...)] 
用户在建表的时候可以自定义 SerDe 或者使用自带的 SerDe。如果没有指定 ROW FORMAT 或者 ROW FORMAT DELIMITED,将会使用自带的 SerDe。在建表的时候,
用户还需要为表指定列,用户在指定表的列的同时也会指定自定义的 SerDe,Hive 通过 SerDe 确定表的具体的列的数据。 
•STORED AS 
  SEQUENCEFILE //序列化文件
  | TEXTFILE //普通的文本文件格式
  | RCFILE  //行列存储相结合的文件
  | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname //自定义文件格式
  如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 
•LOCATION指定表在HDFS的存储路径

2.2两种类型的表

  • 外部表:删除该表并不会删除掉这份数据,不过描述表的元数据信息会被删除掉。
  • 管理表:默认创建的表都是所谓的管理表,有时也被称为内部表。因为这种表,Hive会(或多或少地)控制着数据的生命周期,删除一个管理表时,Hive也会删除这个表中数据.
修改表的属性值可以进行外部表与内部表的互换
tblproperties('EXTERNAL'='FALSE');
注意:('EXTERNAL'='TRUE')和('EXTERNAL'='FALSE')为固定写法,区分大小写!

3.1 分区表(Hive中的分区就是分目录)

create external table student_ptn(id int, name string, sex string, age int,department string)
partitioned by (city string)
row format delimited fields terminated by ","
location "/hive/student_ptn";

--添加分区
alter table student_ptn add partition(city="beijing");
-- 删除分区
alter table student_ptn drop partition (city='beijing');
--删除多个分区
alter table student_ptn drop partition (city='beijing'),partition(city='shanghai');
--查看分区表有多少分区
show partitions student_ptn;

3.2 分桶表

create external table student_bck(id int, name string, sex string, age int,department string)
clustered by (id) sorted by (id asc, name desc) into 4 buckets
row format delimited fields terminated by ","
location "/hive/student_bck";
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值