Hive 之 DDL

DDL(data definition language): 主要的命令有CREATE、ALTER、DROP等。DDL主要是用在定义、修改数据库对象的结构 或 数据类型。

1、Database

1.1 创建database

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment] 
[LOCATION hdfs_path]
[MANAGEDLOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
  • COMMENT : 数据库备注
  • LOCATION : 数据在HDFS 上的存储路径, 默认地址是 /user/hive/warehouse/*.db
  • MANAGEDLOCATION :内部表数据存储路径,目前没用到,为HIVE 后续版本预留的
  • DBPROPERTIES :添加一些数据库的属性
hive (default)>
              > CREATE  DATABASE  IF NOT EXISTS  my_db
              > COMMENT  'my hive db'
              > LOCATION '/user/hive/my_db.db'
              > WITH DBPROPERTIES('date'='2021-10-1','city'= 'shenzhen');
OK
Time taken: 0.154 seconds
hive (default)>
              > show databases;
OK
database_name
default
my_db
Time taken: 0.076 seconds, Fetched: 2 row(s)

1.2 查看数据库

desc  database  my_db;
desc database  extended  my_db;
describe database  extended  my_db;

使用数据库

use my_db;

正在使用的库

select current_database();

查看建库语句

show create database my_db;

1.3 删除数据库

-- 删除一个空数据库
drop database databasename;
-- 如果数据库不为空,使用 cascade 强制删除
drop database databasename cascade;

2、Table

2.1 建表语法

create [external] table [IF NOT EXISTS] table_name
[(colName colType [comment 'comment'], ...)]
[comment table_comment]
[partition by (colName colType [comment col_comment], ...)]
[clustered BY (colName, colName, ...)
             [sorted by (col_name [ASC|DESC], ...)] 
             into num_buckets  buckets]
[row format row_format]
[stored as file_format]
[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];

  • EXTERNAL关键字。创建外部表,否则创建的是内部表(管理表)。
  • partition by。对表中数据进行分区,指定表的分区字段
  • clustered by。创建分桶表,指定分桶字段
  • sorted by。对桶中的一个或多个列排序,较少使用
  • row format row_format
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, ...)]
  • stored as
     SEQUENCEFILE //序列化文件
      | TEXTFILE //普通的文本文件格式
      | RCFILE  //行列存储相结合的文件
      | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname //自定义文件格式,如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCE 。

  • AS。后面可以接查询语句,表示根据后面的查询结果创建表

  • . LIKE。like 表名,允许用户复制现有的表结构,但是不复制数据

建表t1

create table t1(
id int,
name string,
hobby array<string>,
addr map<string, string>
)
row format delimited
fields terminated by ";"           # 字段分隔符
collection items terminated by "," # 集合元素之间的分隔符 
map keys terminated by ":";        # map 类型中kv 的分隔符

# 数据
[root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值