02 Hive支持的数据类型( Data Type)

Hive支持简单、复杂两大类数据类型,

简单类型

Hive 简单数据类型 Java 数据类型 长度 例子
TINYINT byte 1byte 有符号整数 20
SMALINT short 2byte 有符号整数 20
INT int 4byte 有符号整数 20
BIGINT long 8byte 有符号整数 20
BOOLEAN boolean 布尔类型,true 或者 false TRUE FALSE
FLOAT float 单精度浮点数 3.14159
DOUBLE double 双精度浮点数 3.14159
STRING string 字符系列。可以指定字 符集。可以使用单引号或者双 引号。 ‘ now is the time ’ “for all good men”
TIMESTAMP 时间类型
BINARY 字节数组

类型转换

简单类型按以下层次结构组织(父实例是所有子实例的超类型)

  • Primitive Type
    • Number
      • DOUBLE
        • FLOAT
          • BIGINT
            • INT
              • SMALLINT
                • TINYINT
        • STRING
    • BOOLEAN

这种类型层次结构定义了如何在查询语言中隐式地转换类型。类似于Java的类型转换,允许从子类型到祖先类型的隐式转换。因此,当查询表达式期望类型1且数据为类型2时,如果类型1是类型层次结构中类型2的祖先,则类型2将隐式转换为类型1。请注意,类型层次结构允许隐式地将STRING转换为DOUBLE。不同于Java的是,Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。

例如CAST('1' AS INT)将把字符串'1' 转换成整数1;如果强制类型转换失败,如执行CAST('X' AS INT),表达式返回空值 NULL。

复杂类型

Hive复杂数据类型 描述 语法示例
STRUCT 和 c 语言中的 struct 类似,都可以通过“点”符号访 问元素内容。例如,如果某个列的数据类型是 STRUCT{first STRING, last STRING},那么第 1 个元素可以通过字段.first 来 引用。 struct() 例 如 struct<street:string, city:string>
MAP MAP 是一组键-值对元组集合,使用数组表示法可以 访问数据。例如,如果某个列的数据类型是 MAP,其中键 ->值对是’first’->’John’和’last’->’Doe’,那么可以 通过字段名[‘last’]获取最后一个元素 map() 例如 map<string, int>
ARRAY 数组是一组具有相同类型和名称的变量的集合。这些 变量称为数组的元素,每个数组元素都有一个编号,编号从 零开始。例如,数组值为[‘John’, ‘Doe’],那么第 2 个 元素可以通过数组名[1]进行引用。 Array() 例如 array
posted @ 2021-02-19 20:07  数大招疯-公众号同名  阅读(614)  评论(0编辑  收藏  举报