行业知识
Hive SQL 开发指南(一)数据类型及函数
在大���据领域,Hive SQL 是一种常用的查询语言,用于在 Hadoop上进行数据分析和处理。为了确保代码的可读性、维护性和性能,制定一套规范化的 Hive SQL 开发规范至关重要。本文将介绍 Hive SQL 的基础知识,并提供一些规范化的开发指南,帮助您高效地编写 Hive SQL 查询。
()本系列分为
Hive SQL 开发指南(一)数据类型及函数
()Hive SQL 开发指南(二)使用(DDL、DML,DQL)
Hive SQL 开发指南(三)优化及常见异常
一、数据类型
整型
TINYINT – 1字节整数
SMALLINT – 2字节整数
INT – 4字节整数
BIGINT - 8 字节整数
浮点型
FLOAT – 单精度
DOUBLE – 双精度
DECIMAL类型
DECIMAL(precision, scale)
使用举例
CREATE TABLE table2024 (colTinyInt TINYINT);CREATE TABLE table2024 (colInt INT);CREATE TABLE table2024 (colSmallInt SMALLINT);CREATE TABLE table2024 (colBigInt BIGINT);CREATE TABLE table2024 (colFloat FLOAT);CREATE TABLE table2024 (colDouble DOUBLE);CREATE TABLE table2024 (a DECIMAL,b DECIMAL(9, 7));
日期类型
TIMESTAMP – 时间戳类型
说明:
支持传统的unix时间戳,可选的纳秒级精度。
支持的转换:
整型数值类型:解读为以秒为单位的UNIX时间戳
浮动点数值类型:解读为以秒和小数精度为单位的UNIX时间戳。
字符串:JDBC兼容的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”(9位小数位精度)
时间戳被解释是与timezone无关,存储为从UNIX纪元的偏移量。提供便利的UDF和时区转换(to_utc_timestamp,from_utc_timestamp)。
所有现有datetime的UDF(月,日,年,小时,等)可以工作于TIMESTAMP数据类型。
DATE - 日期类型
使用举例
create table timestamp_udf (t timestamp);create table date_udf (t date);
字符类型
STRING – 字符串序列
VARCHAR – 可变字符串序列
CHAR – 单字符字符
使用举例
CREATE TABLE t1(colString STRING);CREATE TABLE t1(colVarchar VARCHAR(10));CREATE TABLE t1(colVarchar CHAR);
复合类型
arrays - 数组
maps - 字典
structs - 结构体
union - 联合体(数据组合)
使用举例
创建数据库表,以array作为数据类型
create table person(name string,work_locations array)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'COLLECTION ITEMS TERMINATED BY ',';
数据
biansutao beijing,shanghai,tianjin,hangzhou
linan changchu,chengdu,wuhan
创建数据库表,以map作为数据类型
create table score(name string, score map)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'COLLECTION ITEMS TERMINATED BY ','MAP KEYS TERMINATED BY ':';
要入库的数据
biansutao '数学':80,'语文':89,'英语':95
jobs '语文':60,'数学':80,'英语':99
创建数据库表,以struct作为数据类型
CREATE TABLE test(id int,course struct)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'COLLECTION ITEMS TERMINATED BY ',';
数据
1 english,80
2 math,89
3 chinese,95
数据组合 (不支持组合的复杂数据类型)
create table test1(id int,a MAP)row format delimited fields terminated by '\t'collection items terminated by ','MAP KEYS TERMINATED BY ':';
1 english:80,90,70
2 math:89,78,86
3 chinese:99,100,82
其它类型
BOOLEAN - TRUE/FALSE
BINARY - 二进制类型
使用举例
CREATE TABLE t1(colBoolean BOOLEAN);CREATE TABLE t1(colBoolean binary);
空值
NULL – 空
使用举例
SELECT * FROM gdr WHERE imsi IS NULL;
二、函数
汇函数(Aggregate Functions)
| 返回类型 | 函数 | 说明 |
| bigint | count(*) , count(expr), count(DISTINCT expr[, expr_., expr_.]) | 返回记录条数。 |
| double | sum(col), sum(DISTINCT col) | 求和 |
| double | avg(col), avg(DISTINCT col) | 求平均值 |
| double | min(col) | 返回指定列中最小值 |
| double | max(col) | 返回指定列中最大值 |
| double | var_pop(col) | 返回指定列的方差 |
| double | var_samp(col) | 返回指定列的样本方差 |
| double | stddev_pop(col) | 返回指定列的偏差 |
| double | stddev_samp(col) | 返回指定列的样本偏差 |
| double | covar_pop(col1, col2) | 两列数值协方差 |
| double | covar_samp(col1, col2) | 两列数值样本协方差 |
| double | corr(col1, col2) | 返回两列数值的相关系数 |
| double | percentile(col, p) | 返回数值区域的百分比数值点。0 |