Fork me on GitHub

hive之路5-hive数据类型

本文中介绍了hive中数据类型知识点,包含:

  • 基本数据类型
  • 复杂数据类型
  • 隐式类型转换
  • 显式类型转换

Hive基本数据类型

数值型

类型 说明
TINYINT 1个字节,-128~127
SMALLINT 2个字节,-32768~32767
INT/INTEGER 4个字节
BIGINT 8个字节
FLOAT 4个字节单精度
DOUBLE 8字节双精度
DECIMAL 38位小数精度,支持科学计数法DECIMAL(9,7)
DECIMAL(precision, scale) decimal(10,0)

日期时间

  • TIMESTAMP

它支持传统的UNIX时间戳可选纳秒的精度。它支持的java.sql.Timestamp格式YYYY-MM-DD HH:MM:SS.fffffffff和格式YYYY-MM-DD HH:MM:ss.ffffffffff

  • DATE

DATE值在年/月/日的格式形式描述 NaN

字符

  • STRING:用单引号或者双引号括起来的字符串
  • VARCHAR:1~65535
  • CHAR:固定长度,最长是255
1
create table bigdata(name char(10))

Misc

  • boolean
  • binary

Hive复杂数据类型

  • 数据array

Syntax: ARRAY<data_type>

1
2
Array("hadoop", "hive", "spark")
array[1]="hive"
  • 映射map

Syntax: MAP<primitive_type, data_type>

1
2
Map(1:"hadoop", 2:"hive")
map[1]="hadoop"
  • 结构体struct

Syntax: STRUCT<col_name : data_type [COMMENT col_comment], …>

1
2
Struct(a:5, b:"hive")
struct.a=5
  • 联合体uniontype
1
2
3
4
5
6
7
8
9
UNIONTYPE<int, double, array<string>, struct<a:int,b:string>>

{0:1}
{1:2.0}
{2:["three","four"]}
{3:{"a":4,"b":"five"}}
{2:["six","seven"]}
{3:{"a":8,"b":"eight"}}
{0:8}
  • 复合型demo
1
2
3
4
5
6
create table complex(
col1 array<int>,
col2 map<string,int>,
col3 struct<a:string,b:int>,
col4 uniontype<string,int>
)

隐式类型转换

hive中的数据类型转换也分为隐式类型转换显式类型转换

第一行的名称为对应第一列的名称缩写

MoYB36.png

  • 布尔型只能转换成自身类型
  • tinyint 不能转成布尔、时间类型和二进制类型
  • 任何类型都可以转成比自己范围更广的类型
  • 所有的整数类型、float、string都可以隐式转成double类型

显式类型转换

  1. 显式类型转换是通过cast函数来实现的,语法为:
1
cast(value as type)
1
2
3
4
# demo
SELECT name,salary
FROM employee
WHERE cast(salary as float) < 100.0;

如果salary是不能转换成float,这时``cast将会返回NULL`

  1. 几点说明
  • 如果将浮点型转换成int类型,内部操作是通过round()或者floor()函数来实现的,而不是通过cast
  • cast()可以进行嵌套操作
1
SELECT (cast(cast(a as string) as double)) from src;  # 先转成string,再转成double
  • 对于Date类型的数据,只能在Date、Timestamp以及String之间进行转换

    MotGGt.png

本文标题:hive之路5-hive数据类型

发布时间:2019年11月22日 - 00:11

原始链接:http://www.renpeter.cn/2019/11/22/hive%E4%B9%8B%E8%B7%AF5-hive%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea