Hive 基本教程

Hive SQL

Hive 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/hive-sql-ddl.html

Hive SQL 数据定义详解


HiveQL 是 Hive 的查询语言。和普遍使用的所有 SQL 方言一样,它不完全遵守任何一种 ANSI SQL 标准的修订版。HiveQL 可能和 MySQL 的方言最接近,但是两者还是存在显著性差异的。Hive 不支持行级插入操作、更新操作和删除操作。Hive 也不支持事务。

Hive 增加了在 Hadoop 背景下的可以提供更高性能的扩展,以及一些个性化的扩展,甚至还增加了一些外部程序。

Hive 中的数据库

Hive 中数据库的概念本质上仅仅是表的一个目录或者命名空间。然而,对于具有很多组和用户的大集群来说,这是非常有用的,因为这样可以避免表命名冲突。通常会使用数据库来将生产表组织成逮辑组。

如果用户没有显式指定数据库,那么将会使用默认的数据库 default。

创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [MANAGEDLOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];

Hive 创建数据库采用如上语句,通常情况下,为了避免库重名报错,语句会添加 IF NOT EXISTS 修饰符以保证在库名不重复时建立。

Hive 最初是只有 SCHEMA 表示库,在 Hive 0.6 开始才引入了 CREATE DATABASEDBPROPERTIES 子句是从 Hive 0.7 版本时加入的,MANAGEDLOCATION 是 Hive 4.0.0 版本开始添加的。

假设创建一个 knowledgedict 库,语句如下:

CREATE DATABASE IF NOT EXISTS knowledgedict

修改数据库

用户可以使用 ALTER DATABASE 命令为某个数据库的 DBPROPERTIES 设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。

ALTER (DATABASE|SCHEMA) database_name 
    SET DBPROPERTIES (property_name=property_value, ...);   -- (Note: SCHEMA added in Hive 0.14.0)
 
ALTER (DATABASE|SCHEMA) database_name
    SET OWNER [USER|ROLE] user_or_role;   -- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)
  
ALTER (DATABASE|SCHEMA) database_name 
    SET LOCATION hdfs_path; -- (Note: Hive 2.2.1, 2.4.0 and later)
 
ALTER (DATABASE|SCHEMA) database_name 
    SET MANAGEDLOCATION hdfs_path; -- (Note: Hive 4.0.0 and later)

 

Hive SQL 数据操作主要是针对表的增删改查,和标准 SQL 类似,其中最常用的是查询语句,即 SELECT 相关语句。 ...
Hive SQL 条件函数 IF 是用于处理单个列的判断查询结果,形式为 if(条件表达式, 结果1, 结果2),相当于 java 中的三目 ...
Hive SQL 内置支持绝大多数 SQL 的内置函数,其中主要包括数学函数,类型转换函数,条件函数,字符函数,聚合函数,表生成函数等等。 ...
Hive SQL 中将字符串拼接的函数是 CONCAT,它返回指定参数的连接字符串,此函数可以接受任意数量的输入字符串。 ...
Hive 提供了取模操作的函数 pmod,也叫做取余函数,它可以处理 int 或 double 类型参数,返回取余整数或浮点数。 ...