Hive DDL语法

DDL语法1. 数据库操作创建一个数据库会在HDFS上创建一个目录,Hive里数据库的概念类似于程序中的命名空间,用数据库来组织表,在大量Hive的情况下,用数据库来分开可以避免表名冲突。Hive默认的数据库是default。hive不能使用关键字、数字开始的字符串来作库表名,不区分大小写。1.1 创建数据库例子:hive> create database [if not ex...
摘要由CSDN通过智能技术生成

DDL语法

1. 数据库操作

  1. 创建一个数据库会在HDFS上创建一个目录,Hive里数据库的概念类似于程序中的命名空间,用数据库来组织表,在大量Hive的情况下,用数据库来分开可以避免表名冲突。Hive默认的数据库是default。
  2. 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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值