zoukankan      html  css  js  c++  java
  • hive数据类型及其数据转换

    由于需要使用hive sql进行数据查询,同时涉及多个不同类型的字段的组合,看Hive sql的文档相关和资料才知道,hive是支持大部分基础数据类型之间的相互转换的。

    那么,hive本身支持哪些数据类型呢?

    hive内置数据类型中,Hive支持的数据类型包括以下这些:

    数据类型

    所占字节

    开始支持版本

    TINYINT

    1byte,-128 ~ 127

     

    SMALLINT

    2byte,-32,768 ~ 32,767

     

    INT

    4byte,-2,147,483,648 ~ 2,147,483,647

     

    BIGINT

    8byte,-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

     

    BOOLEAN

     

     

    FLOAT

    4byte单精度

     

    DOUBLE

    8byte双精度

     

    STRING

     

     

    BINARY

     

    从Hive0.8.0开始支持

    TIMESTAMP

     

    从Hive0.8.0开始支持

    DECIMAL

     

    从Hive0.11.0开始支持

    CHAR

     

    从Hive0.13.0开始支持

    VARCHAR

     

    从Hive0.12.0开始支持

    DATE

     

    从Hive0.12.0开始支持


    以及一些数据数据类型:包括array数组,map键值对,struct结构体,union联合等。

    可以看到,hive对平时用到的数据类型都有所支持。


    同时,hive也支持了以上大部分数据类型之间的转换

    其中部分基础数据类型支持隐式转换,意味着在使用过程中可以直接把源类型作为目标类型来使用,支持数据类型隐式的类型包括:

     

    boolean

    tinyint

    smallint

    int

    bigint

    float

    double

    decimal

    string

    varchar

    timestamp

    date

    binary

    boolean

    true

    false

    false

    false

    false

    false

    false

    false

    false

    false

    false

    false

    false

    tinyint

    false

    true

    true

    true

    true

    true

    true

    true

    true

    true

    false

    false

    false

    smallint

    false

    false

    true

    true

    true

    true

    true

    true

    true

    true

    false

    false

    false

    int

    false

    false

    false

    true

    true

    true

    true

    true

    true

    true

    false

    false

    false

    bigint

    false

    false

    false

    false

    true

    true

    true

    true

    true

    true

    false

    false

    false

    float

    false

    false

    false

    false

    false

    true

    true

    true

    true

    true

    false

    false

    false

    double

    false

    false

    false

    false

    false

    false

    true

    true

    true

    true

    false

    false

    false

    decimal

    false

    false

    false

    false

    false

    false

    false

    true

    true

    true

    false

    false

    false

    string

    false

    false

    false

    false

    false

    false

    true

    true

    true

    true

    false

    false

    false

    varchar

    false

    false

    false

    false

    false

    false

    true

    true

    true

    true

    false

    false

    false

    timestamp

    false

    false

    false

    false

    false

    false

    false

    false

    true

    true

    true

    false

    false

    date

    false

    false

    false

    false

    false

    false

    false

    false

    true

    true

    false

    true

    false

    binary

    false

    false

    false

    false

    false

    false

    false

    false

    false

    false

    false

    false

    true


    同时,我们可以使用CAST显式的将一个类型的数据转换成另外一个类型的数据。

    如果hive不支持该类型的转换,在使用CAST进行转换时,就会报错:

    如将bigint转换为binary

            CAST((9223372036854775807-unix_timestamp()) as binary)                                               

    
    

    则会报“invalid cast from bigint to binary”错误。

    过往记忆总结的很好,上面的内容也多半出自此处,并进行了一定的加工汇总。

  • 相关阅读:
    【BZOJ 3282】Tree Link Cut Tree模板题
    【BZOJ 2002】【Hnoi 2010】弹飞绵羊 分块||Link Cut Tree 两种方法
    【BZOJ 1507】【NOI 2003】&【Tyvj P2388】Editor 块状链表模板题
    小结-Splay
    【BZOJ 3545】【ONTAK 2010】Peaks & 【BZOJ 3551】【ONTAK 2010】Peaks加强版 Kruskal重构树
    【BZOJ 3732】 Network Kruskal重构树+倍增LCA
    【BZOJ 3674】可持久化并查集加强版&【BZOJ 3673】可持久化并查集 by zky 用可持久化线段树破之
    【BZOJ 1901】【Zju 2112】 Dynamic Rankings 动态K值 树状数组套主席树模板题
    1020: [SHOI2008]安全的航线flight
    POJ
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205033.html
Copyright © 2011-2022 走看看