HiveQL学习笔记1
1、SQL和HiveQL的概要比较
特性 | SQL | HiveQL |
---|---|---|
更新 | UPDATA , INSERT, DELETE | UPDATE, INSERT, DELETE |
事务 | 支持 | 有限支持 |
索引 | 支持 | 支持 |
延迟 | 亚秒级 | 分钟级 |
数据类型 | 整数,浮点数,定点数,文本和二进制串,时间 | 布尔型,整数,浮点数,文本和二进制串,时间戳,数组,映射,结构 |
函数 | 数百个内置函数 | 数百个内置函数 |
多表插入 | 不支持 | 支持 |
CREATE TABLE AD SELECT | 部分数据库支持 | 支持 |
SELECT | SQL-92 | SQL-92。支持偏序SORT BY。可限制返回行数量的LIMIT |
连接 | SQL-92支持或变相支持 | 内连接,外链接,半连接,映射,连接,交叉连接 |
子查询 | 在任何字句中支持“相关”的或不相关的 | 只能在FORM,WHERE或HAVING子句中 |
视图 | 可更新 | 只读 |
扩展点 | 用户自定义函数,存储过程 | 用户定义函数, MapReduce脚本 |
2、数据类型
基本数据类型
类型 | 描述 | 文字示例 |
---|---|---|
BOOLEAN | true/false | TRUE |
TINYINT | 1字节有符号整数,[-128,127] | 1Y |
SMALLINT | 2字节有符号整数,[-32768,32767] | 1S |
INT | 4字节有符号整数[-2147483,2147483647] | 1 |
BIGINT | 8字节有符号整数[-9223372036854775808, 9223372036854775807] | 1L |
FLOAT | 4字节单精度浮点数 | 1.0 |
DOUBLE | 8字节双精度浮点数 | 1.0 |
DECIMAL | 任意精度有符号小数 | 1.0 |
STRING | 无上限可变长度字符串 | ‘a’ “a” |
VARCHAR | 可变长度字符串 | ‘a’ “a” |
CHAR | 固定长度字符串 | ‘a’ “a” |
BINARY | 字节数据 | 不支持 |
TIMESTAMP | 精度到纳秒的时间戳 | – |
DATE | 日期 | 2018-05-31 |
复杂数据类型
类型 | 描述 | 文字示例 |
---|---|---|
ARRAY | 一组有序字段,字段的类型必须相同 | array(1,2) |
MAP | 一组无序的字段,键的类型必须是原子的;值可以是任何类型,同一个映射的键的类型必须相同,值得类型也必须相同 | map(‘a’,1,’b’,2) |
STRUCT | 一组命名的字段,字段的类型可以不同 | struct(‘a’,1, 1.0), named_struct(‘col1’, ‘a’, ‘col2’, 1) |
UNION | 值得数据类型可以是多个被定义的数据类型中的任意一个,这个值通过一个整数(零索引)来标记其为联合类型中的哪个数据类型 | create_union(1,’a’,63) |