HIVE 数据类型(Type System)

  • 基础类型(Primitive Types)

    • 整型(Integers)
      • TINYINT——1byte有符号整数(-128——127)
      • SMALLINT——2 byte有符号整数(-32768——32767)
      • INT——4 byte有符号整数(-2147483648——2147483647)
      • BIGINT——8 byte有符号整数(-9223372036854775808——9223372036854775807)
    • 布尔型(Boolean type)
      • BOOLEAN——TRUE/FALSE
    • 浮点型(Floating point numbers)
      • FLOAT——4byte单精度
      • DOUBLE——8byte双精度
    • 定点型(Fixed point numbers)
      • DECIMAL——a fixed point value of user defined scale and precision
    • 字符串类型(String types)
      • STRING——sequence of characters in a specified character set
      • VARCHAR——sequence of characters in a specified character set with a maximum length (HIVE 0.12.0开始支持)
      • CHAR——sequence of characters in a specified character set with a defined length (HIVE 0.13.0开始支持)
    • 日期和时间类型(Date and time types)
      • TIMESTAMP——a specific point in time, up to nanosecond precision (HIVE 0.8.0开始支持)
      • DATE——a date (HIVE 0.12.0开始支持)
      • INTERVAL (HIVE 1.2.0开始支持)
    • 二进制类型(Binary types)
      • BINARY——a sequence of bytes (HIVE 0.8.0开始支持)
  • 基础数据类型体系结构(Hierarchy of Primitive Types)


    这里写图片描述

    从上图中可以推导出HIVE查询中数据类型的隐式转换表如下:

    这里写图片描述

  • 复合类型(Complex Types)

    • 数组类型(arrays)
      ARRAY< data_type > (Note: negative values and non-constant expressions are allowed as of Hive 0.14.). 例如,A=[‘a’, ‘b’, ‘c’], A[‘1’]=’b’.
    • map类型(maps)
      MAP< primitive-type, data_type > (Note: negative values and non-constant expressions are allowed as of Hive 0.14.). 例如M={‘id’, ‘2009’, ‘num’, ‘10’}, M[‘id’]=’2009’.
    • 结构体类型(structs)
      structs: STRUCT< col_name : data_type [COMMENT col_comment], … >. 例如S={a 100; b 200}, S.a=100.
    • 联合体类型(union)
      UNIONTYPE< data_type, data_type, … > (Note: Only available starting with Hive 0.7.0.). 例如{0:1} {1:2.0} {2:{“three”, “four”}}.
  • 类型说明

    • string
      值放单引号(”)内,也可以放双引号(“”)内。
    • Varchar
      字符串值的长度固定(1到65535),如果字符串的长度超过指定的长度,则会被剪短(silently truncated)。
    • Char
      字符串值的长度固定(1到255),如果字符串的长度不足指定的长度,则会在字符串末尾补空格(spaces), 注意,Varchar类型不会进行末尾补空格。
    • Timestamps
      • 支持整型,直接解释为UNIX时间戳
      • 支持浮点型,解释为带浮点数精度的UNIX时间戳
      • 支持字符串类型,格式为 “YYYY-MM-DD HH:MM:SS.fffffffff”
      • 所有的datetime UDFs 函数都兼容TIMESTAMP类型
      • 文本类型的Timestamp值必须采用”YYYY-MM-DD HH:MM:SS.fffffffff”格式,其它格式需转换为此格式
    • Dates
      格式为:’YYYY-­MM-­DD’, 支持范围为 0000-­01-­01——9999-­12-­31
      Dates支持与Timestamp, String类型的转换,如下图所示:

      这里写图片描述
    • Intervals
      可以支持的的时间间隔类型如下图所示:

      这里写图片描述
    • Decimals
      小数类型, HIVE 0.11.0引入,HIVE 0.13.0修正。小数类型在HIVE 0.12.0和HIVE 0.13.0之间是不兼容的(可以通过ALTER来实现转换)。
  • NULL值处理
    缺失值以NULL表示。
    To import data with NULL fields, check documentation of the SerDe used by the table. (The default Text Format uses LazySimpleSerDe which interprets the string \N as NULL when importing.)

  • 参考文献
    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types
    https://cwiki.apache.org/confluence/display/Hive/Tutorial#Tutorial-TypeSystem


版权声明:本文为u014034685原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。