• hive 数据类型


    列类型

    Hive支持的数据类型如下:

    原生类型:

    • TINYINT
    • SMALLINT
    • INT
    • BIGINT
    • BOOLEAN
    • FLOAT
    • DOUBLE
    • STRING
    • BINARY (Hive 0.8.0以上才可用)
    • TIMESTAMP (Hive 0.8.0以上才可用)

    复合类型:

    • arrays: ARRAY<data_type>
    • maps: MAP<primitive_type, data_type>
    • structs: STRUCT<col_name : data_type [COMMENT col_comment], ...>
    • union: UNIONTYPE<data_type, data_type, ...>

    时间戳

    支持传统的unix时间戳,可选的纳秒级精度。

    支持的转换:

    • 整型数值类型:解读为以秒为单位的UNIX时间戳
    • 浮动点数值类型:解读为以秒和小数精度为单位的UNIX时间戳。
    • 字符串:JDBC兼容的java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”(9位小数位精度)

    时间戳被解释是与timezone无关,存储为从UNIX纪元的偏移量。提供便利的UDF和时区转换(to_utc_timestamp,from_utc_timestamp)。
    所有现有datetime的UDF(月,日,年,小时,等)可以工作于TIMESTAMP数据类型。

     

    Union类型

    Union类型可以在同一时间点,保持恰好有一个指定的数据类型。您可以使用create_union的UDF创建一个实例的类型:

    复制代码
    CREATE TABLE union_test(foo UNIONTYPE<int, double, array<string>, struct<a:int,b:string>>);
    SELECT foo FROM union_test;
    
    {0:1}
    {1:2.0}
    {2:["three","four"]}
    {3:{"a":5,"b":"five"}}
    {2:["six","seven"]}
    {3:{"a":8,"b":"eight"}}
    {0:9}
    {1:10.0}
    复制代码

    第一部分,对于union的发序列化来说是一个tag,让它知道哪个union的部分被使用。在例子0,表明声明的第一个数据类型,即是int,其他如此。

    创建union,必须提供为create_union UDF提供tag。

    SELECT create_union(0, key), create_union(if(key<100, 0, 1), 2.0, value), create_union(1, "a", struct(2, "b")) FROM src LIMIT 2;
    
    {0:"238"}    {1:"val_238"}    {1:{"col1":2,"col2":"b"}}
    {0:"86"}    {0:2.0}    {1:{"col1":2,"col2":"b"}}

    常量

    数值类型

    默认,数值类型认为是INT,除非INT超出了INT的范围,那么会被解释为BIGINT,或者是如下的后缀在数值中被使用。

    Type Postfix Example
    TINYINT Y 100Y
    SMALLINT S 100S
    BIGINT L 100L

    字符串类型

    字符串可以用单引号(')或双引号(“)。Hive在字符串中使用C-Style的转义。

    浮点类型

    浮点类型数值,被假定为双浮点类型。目前还不支持科学记数法。

    NULL值的处理

    遗漏的值被代表为特殊值NULL。 要导入NULL字段的数据,需要查阅使用的SerDe的文档。 (默认的文本格式使用LazySimpleSerDe的解释字符串 N为NULL)

  • 相关阅读:
    Java虚拟机
    Java集合常见面试题一
    5个新自动化测试框架,你值得了解
    Mock工具介绍
    空降,如何做好管理?
    QA在业务变动中如何维护测试用例?
    接口越权扫描平台初探
    程序员删代码泄愤,被判刑5个月,网友:年轻人不讲武德?!
    哪些 Python 库让你相见恨晚?
    两篇毕业论文致谢同一个女朋友?哈哈哈哈!
  • 原文地址:https://www.cnblogs.com/jamesf/p/4751466.html
Copyright © 2020-2023  润新知