前一篇文章,介绍了什么是 hive,以及 hive 的架构、数据类型,没看的可以点击阅读:hive从入门到放弃(一)——初识hive

今天讲一下 hive 的 DDL 数据定义

创建数据库

CREATE DATABASE [IF NOT EXISTS]① database_name
[COMMENT database_comment]②
[LOCATION hdfs_path]③
[WITH DBPROPERTIES (property_name=property_value, ...)]④;

①若存在则不创建,不存在则创建

②数据库注释

③数据库映射到HDFS的数据路径

④可以增加其它数据库配置

查询数据库

show databases --显示数据库
desc database db_name --查看数据库信息
desc database extended db_name --查看数据库详细信息

修改数据库属性

alter database db_hive
set dbproperties('createtime'='20170830');

用户可以使用 ALTER DATABASE 命令为某个数据库的 DBPROPERTIES 设置键-值对属性值,

来描述这个数据库的属性信息。

删除数据库

 drop database [if exists] database_name [cascade]

cascade 命令表示强制删除

创建表

CREATE [EXTERNAL]① TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[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]
[ROW FORMAT⑤ row_format]
[STORED AS⑥ file_format]
[LOCATION⑦ hdfs_path]
[TBLPROPERTIES⑧ (property_name=property_value, ...)]
[AS⑨ select_statement | like⑩ table_name]

① EXTERNAL关键字可以创建一个外部表,当删除表的时候,只删除描述表的元数据,不删除存在于 HDFS 上的数据;

与之相反的是内部表,或者叫管理表,管理表在删除的时候会把 HDFS 上的数据一起删除;

这两者可以互相转换:

alter table table_name set tblproperties('EXTERNAL'='TRUE');

② PARTITIONED BY 用以创建分区表,需要指定列用于分区,一个分区对应一个目录,可以提高效率;

③ CLUSTERED BY 创建分桶表,分桶将整个数据按照某列属性值的 hash 值进行区分;

④ SORTED BY 对桶中的一个或多个列另外排序;

⑤ ROW FORMAT 用于指定数据切分格式;官方的用法:

⑥ STORED AS 用以指定存储文件类型,比如 parquet、textfile 等;

⑦ LOCATION 指定文件存储在 HDFS 上的路径;

⑧ TBLPROPERTIES 可用于添加表的其它属性,一般是键值对形式;

⑨ AS 后面接的是查询语句,根据查询结果创建表;

⑩ LIKE 后接表名,复制表结构,但不复制数据。

修改表

-- 更新列
ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name
column_type [COMMENT col_comment] [FIRST|AFTER column_name] -- 增加和替换列
ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT
col_comment], ...)

ADD 是代表新增一字段,字段位置在所有列后面(partition 列前);REPLACE 则是表示替换表中所有字段。

删除表

drop table table_name;

小结

本文主要展示了 hive 的 DDL 用法,包括数据库和表的语法。实际上这里面有部分内容是简单概括,比如分区分桶表的含义作用以及用法,这些后面的文章我会展开描述,可以持续关注【大数据的奇妙冒险】,获取更多知识!

最新文章

  1. scss编译
  2. Python小白好教程
  3. mysql0000-00-00日期异常及解决方法
  4. 干货:Android 源码使用心得分享
  5. android Animation 动画效果介绍
  6. [日记&做题记录]-Noip2016提高组复赛 倒数十天
  7. SVN:cannot map the project with svn provider解决办法
  8. 网络编程2之Socket简介和java.net包
  9. es6五种遍历对象属性的方法 - 表格整理
  10. Android中的线程池
  11. asp.net 实现后台异步处理的方式
  12. 组件之间的数据传递--Vuex
  13. hive SQL COALESCE 函数
  14. Spring Boot --- Swagger基本使用
  15. Nextcloud私有云盘在Centos7下的部署笔记
  16. 2018.11.02 NOIP模拟 飞越行星带(最小生成树/二分+并查集)
  17. QThreadPool线程池的开发使用
  18. (转)Unity3D研究院之Assetbundle的实战(六十三)
  19. 对于java的命名规范(标识符)
  20. 对数组排序三种方式sort、asort与ksort

热门文章

  1. python基础1-类属性和实例属性
  2. Java基础总结(二)
  3. NSURL组成部分详解
  4. JavaGuide--Java篇
  5. Byobu安装与使用
  6. soc AXI接口术语和特性
  7. 如何强制关闭Win10自动更新
  8. TCP三次握手原理
  9. 「BUAA OO Pre」 Pre 2总结回顾概览
  10. const 和指针之间的姻缘