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”错误。

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

  • 相关阅读:
    spark,hadoop集群安装注意
    TFRecord 使用
    python 路径引用问题
    flask使用模板
    tensorflow serving 模型部署
    docker使(二)—发布node应用镜像和容器
    docker使用(一)
    tensorBoard使用
    【疑难杂症】访问所有mapper方法都提醒invalid bound statement (not found)
    win10配置jdk12环境变量
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205033.html
Copyright © 2011-2022 走看看