DDL语法
1. 数据库操作
- 创建一个数据库会在HDFS上创建一个目录,Hive里数据库的概念类似于程序中的命名空间,用数据库来组织表,在大量Hive的情况下,用数据库来分开可以避免表名冲突。Hive默认的数据库是default。
- hive不能使用关键字、数字开始的字符串来作库表名,不区分大小写。
1.1 创建数据库例子:
hive> create database [if not exists] db1;
[]中的可以不写,判断是否存在
1.2 查看数据库定义:
Describe 命令来查看数据库定义,包括:数据库名称、数据库在HDFS目录、HDFS用户名称。
hive> desc database db1;
OK
db1 hdfs://cluster1/user/hive/warehouse/db1.db root USER
Time taken: 0.059 seconds, Fetched: 1 row(s)
db1是数据库名称。
hdfs://cluster1/user/hive/warehouse/db1.db 是db1库对应的存储数据的HDFS上的根目录。
1.3 查看数据库列表:
hive> show databases;
OK
db1
default
Time taken: 0.036 seconds, Fetched: 2 row(s)
1.4 删除数据库
删除数据库时,如果库中存在数据表,是不能删除的,要先删除所有表,再删除数据库。添加上cascade后,就可以先自动删除所有表后,再删除数据库。(友情提示:慎用啊!)删除数据库后,HDFS上数据库对应的目录就被删除掉了。
hive> drop database if exists db1 cascade;
1.5 切换当前数据库
hive> use db1;
2. 表操作
2.1 创建表
内外部表区别:
1、默认创建内部表,创建外部表需要external。
2、一般使用外部表(长期存在的表、数据量大的、不希望把数据块删除的数据),临时表或者确定使用即可清空全部数据(数据库和元数据)则可以使用内部表。
3、内部表删除时将会删除元数据和hdfs中表对应的目录,而外部表删除时只会删除元数据,hdfs中的数据目录保留。
4、alter table userinfo set tblproperties('EXTERNAL'='true'); ###内部表转外部表,true一定要大写;
alter table log3 set tblproperties('EXTERNAL'='false'); ##false大小写都没有关系
分区表:
静态分区:加载数据到指定分区的值。
动态分区:数据未知,根据分区的值来确定需要创建的分区。
混合分区:静态和动态都有。
动态分区的属性:
set hive.exec.dynamic.partition=true #设定动态分区
set hive.exec.dynamic.partition.mode=strict/nonstrict #设定严格模式与否
set hive.exec.max.dynamic.partitions=1000 #设定最大分区数
set hive

本文介绍了Hive的DDL语法,包括数据库操作如创建、查看、删除,以及表操作如创建内部表、外部表、分区表和桶表,强调了分区表在优化查询性能上的作用,并提供了修改和删除表的相关命令。
最低0.47元/天 解锁文章
9098

被折叠的 条评论
为什么被折叠?



