Hive学习笔记:数据库、表、视图和索引

环境:CentOS7
           hive-1.1.0-cdh5.14.0
           hadoop-2.6.0-cdh5.14.0

数据库 Database

Hive中数据库的概念类似于表的所在目录或者命名空间,在这一点上跟mysql有点像,database即schema,而不像Oracle,database跟schema是两个不同的粒度。因此,在hive中,schemas/schema关键字一般都可以代替databases/database。
在hive中使用use dbname显式指定数据库,如果没有显式指定,则会使用默认的数据库default,存储在default库中的表目录会直接在HDFS的根目录中生成。
创建数据库:CREATE DATABASE [IF NOT EXISTS] dbname [comment xxx] ; 如果不使用IF NOT EXISTS子句,则在创建的数据库与已有的库同名的情况下,会抛出错误,comment子句为数据库增加描述信息
查看所有数据库:SHOW DATABASES; 这里可以使用LIKE子句来进行模糊查询。
删除数据库:DROP DATABASE dbname [cascade]; 使用cascade会删除带表的数据库,否则当数据库含表时使用drop的时候会抛出错误
查看指定数据库信息:DESC DATABASES dbname;查看数据库的描述信息和所在的文件目录位置路径
另外,可以在hive-site.xml中添加hive.cli.print.current.db=true,来在提示符里显示当前所在的数据库,但是beeline的话,官方文档指出的是使用--showDbInPrompt=true参数启动也可以有这个功能,但是实际测试并没有生效,有知道的可以留言一下>,<

表 Table

Hive中的表有几种,临时表,内部表,外部表,再细分有分区表,桶表。
注意:临时表只存在于当前session,且不支持索引和分区。

创建表

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name   --(不加TEMPORARY/EXTERNAL的就是内部表)
  [(col_name data_type [COMMENT col_comment], ... [constraint_specification])] --(列名,数据类型)
  [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]
  [SKEWED BY (col_name, col_name, ...)           --(倾斜表,指定经常出现的值,以便应对数据倾斜时候的JOIN)       
     ON ((col_value, col_value, ...), (col_value, col_value, ...), ...)
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值