Hive_Hive中数据类型介绍
参考的⽂章:
Hive 数据类型
Hive 学习之Hive 数据类型
Hive 中数据类型主要分为以下⼏种类型
数值类型
字符串类型
⽇期/时间类型
其他类型
复合类型
下⾯对上⾯的⼏种类型进⾏讲解:
数值类型
Hive中的数值类型与Java中的数值类型很相似,区别在于有些类型的名称不⼀样。可以归结为以下⼏种类型TINYINT , SMALLINT, INT  / INTEGER , BIGINT , FLOAT, DOUBLE , DECIMAL
下⾯按照这种⽅式进⾏展⽰ :
解释    类型名称      ⼤⼩      最⼩值      最⼤值    ⽰例
TINYINT
解释: 1-byte signed integer, from -128 to 127
⼤⼩:    1字节
最⼩值 : -128
最⼤值 : 127
⽰例:    45Y
-------------------------------
SMALLINT
解释:2-byte signed integer, from -32,768 to 32,767
⼤⼩ : 2字节
最⼩值:-32768
最⼤值 :  32767
⽰例:  100S
-------------------------------
INT  / INTEGER
解释 : 4-byte signed integer, from -2,147,483,648 to 2,147,483,647
⼤⼩ : 4字节
最⼩值 : -2,147,483,648
最⼤值 :2,147,483,647
⽰例: 36
-------------------------------
BIGINT
解释:8-byte signed integer, from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807⼤⼩ :8字节
最⼩值 : -9,223,372,036,854,775,808
最⼤值 :9,223,372,036,854,775,807
⽰例: 2000L
--------------------------------------------------------------------------
超过BIGINT 的整型
⼤于BIGINT的数值,需要使⽤BD后缀以及Decimal(38,0)来处理,例:
select CAST(18446744073709001000BD AS DECIMAL(38,0)) from my_table limit 1;
----------------------------------------------------------------
FLOAT
解释:4-byte single precision floating point number
⼤⼩: 4字节
最⼩值: ---
最⼤值: ---
备注: 4字节单精度
------------------------------------------------------------
DOUBLE
解释 :8-byte double precision floating point number
⼤⼩:8字节
最⼩值: ---
最⼤值: ---
备注: 8字节双精度
----------------------------------
DECIMAL
decimal是整数数据类型解释:Decimal datatype was introduced in Hive 0.11.0 (HIVE-2693) and revised in Hive 0.13.0 (HIVE-3976)
⼤⼩:    ---
最⼩值:  ---
最⼤值:  ---
Hive的⼩数型是基于Java BigDecimal做的, BigDecimal在java中⽤于表⽰任意精度的⼩数类型。
所有常规数字运算(例如+, - ,*,/)和相关的UDFs(例如Floor,Ceil,Round等等)都使⽤和⽀持Decimal。
你可以将Decimal和其他数值型互相转换,且Decimal⽀持科学计数法和⾮科学计数法。因此,⽆论您的数据集是否包含如4.004E + 3(科学记数法)或4004(⾮科学记数法)或两者的组合的数据,可以使⽤Decimal。
从Hive 0.13开始,⽤户可以使⽤DECIMAL(precision, scale) 语法在创建表时来定义Decimal数据类型的precision和scale。
1)如果未指定precision,则默认为10。
2)如果未指定scale,它将默认为0(⽆⼩数位)。
⽰例:
CREATE TABLE foo (
a DECIMAL, – Defaults to decimal(10,0)
b DECIMAL(9, 7)
)
Decimal在Hive 0.12.0 and 0.13.0之间是不兼容的,故0.12前的版本需要迁移才可继续使⽤,具体情况参见官⽹。
========================================
=========================================
字符串类型
Hive 中⽬前有三种字符串类型。
STRING, VARCHAR,CHAR
STRING
字符串⽂字可以⽤单引号(’)或双引号(“)表⽰。Hive在字符串中使⽤C风格的转义。
VARCHAR
Hive-0.12.0版本引⼊了VARCHAR类型,VARCHAR类型使⽤长度指⽰器(1到65355)创建,长度指⽰器定义了在字符串中允许的最⼤字符数量。
Varchar类型使⽤长度说明符(介于1和65355之间)创建,它定义字符串中允许的最⼤字符数。 如果要转换/分配给varchar值的字符串值超过length说明符,则字符串将被静默截断。 字符长度由字符串包含的代码点的数量确定。像字符串⼀样,尾部空格在varchar中很重要,并且会影响⽐较结果。(VARCHAR)
⾮通⽤UDFs不能直接使⽤varchar类型作为输⼊参数或返回值。 可以创建字符串UDFs,⽽varchar值将被转换为strings并传递到UDF。 要直接使⽤varchar参数或返回varchar值,请创建GenericUDF。
如果基于reflection-based⽅法来获取数据类型信息,则可能存在不⽀持varchar的场景。 这包括⼀些SerDe函数实现。
CHAR
Hive-0.13.0版本引⼊了CHAR类型。
字符类型与Varchar类似,但它们是固定长度的,意味着⽐指定长度值短的值⽤空格填充,但尾随空格在⽐较期间不重要(CHAR)。 CHAR的最⼤长度固定为255。
创建⽰例:
CREATE TABLE test(c CHAR(10), vc VARCHAR(30));
============================================
============================================
⽇期/时间类型
Hive ⽬前⽀持3种时间类型,分别为:
TIMESTAMP ,DATE , INTERVAL
这3种类型的⽀持版本分别为:
TIMESTAMP    Note: Only available starting with Hive 0.8.0
DATE              Note: Only available starting with Hive 0.12.0
INTERVAL      Note: Only available starting with Hive 1.2.0
下⾯分别对这3种类型进⾏说明
TIMESTAMP
Hive⽀持带可选的纳秒级精度的UNIX timestamp。Hive中的timestamp与时区⽆关,存储为UNIX纪元的偏移量。
Hive提供了⽤于timestamp和时区相互转换的便利UDF:to_utc_timestamp  和 from_utc_timestamp。
Timestamp类型可以使⽤所有的⽇期时间UDF,如month、day、year等。
⽂本⽂件中的Timestamp必须使⽤yyyy-mm-dd hh:mm:ss[.f...]的格式,如果使⽤其它格式,将它们声明为合适的类型(INT、FLOAT、STRING等)并使⽤UDF将它们转换为Timestamp。
Timestamp⽀持的类型转换为:
整数类型:转换为秒级的UNIX时间戳。
浮点数类型:转换为带⼩数精度的UNIX时间戳。
字符串类型:适合java.sql.Timestamp格式"YYYY-MM-DD HH:MM:SS.fffffffff"(9位⼩数精度)。
DATE
Hive中DATE类型的值描述了特定的年⽉⽇,以YYYY-M M-D D格式表⽰,例如2014-05-29。DATE类型不包含时间,所表⽰⽇期的范围为0000-01-01 to 9999-12-31。这取决于Java Date类型的原始⽀持。
DATE类型仅可与DATE、TIMESTAMP、STRING类型相互转化,如下所⽰:
英⽂原⽂:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。