zoukankan      html  css  js  c++  java
  • 【Hive】数据类型

    1.基本类型

      整型:tinyint / samllint / int / bigint

      浮点型:float / double / Decimals

      布尔型:boolean

      字符串:string / varchar / char

      注意:默认情况下,整数型为INT型,当数字大于INT型的范围时,会自动解释执行为BIGINT,或者使用以下后缀进行说明。TINYINT - Y ,SMALLINT - S,BIGINT - L

           Decimal用于表示任意精度的小数类型,且支持科学计数法和非科学计数法。

         示例:CREATE TABLE foo (
              a DECIMAL, – Defaults to decimal(10,0)   //设置默认值
              b DECIMAL(9, 7)
            )

         Varchar类型使用长度说明符(介于1和65355之间)创建,它定义字符串中允许的最大字符数。

           Char字符类型与Varchar类似,但它们是固定长度的,意味着比指定长度值短的值用空格填充。

            vname varchar(20),cname char(20)    vname不够20字符不用空格填充,name用。

    2.时间类型

      (1)Timestamps

      支持传统的UNIX时间戳和可选的纳秒精度。
      - 支持的转化:
      - 整数数字类型:以秒为单位解释为UNIX时间戳
      - 浮点数值类型:以秒为单位解释为UNIX时间戳,带小数精度
      - 字符串:符合JDBC java.sql.Timestamp格式“YYYY-MM-DD HH:MM:SS.fffffffff”(9位小数位精度)
      时间戳被解释为无时间的,并被存储为从Unix纪元的偏移量。 提供了用于转换到和从时区转换的便捷UDFs(to_utc_timestamp,from_utc_timestamp)。
      所有现有的日期时间UDFs(月,日,年,小时等)都使用TIMESTAMP数据类型。
      Text files中的时间戳必须使用格式yyyy-mm-dd hh:mm:ss [.f …]。 如果它们是另一种格式,请将它们声明为适当的类型(INT,FLOAT,STRING等),并使用UDF将它们转换为时间戳。
      在表级别上,可以通过向SerDe属性”timestamp.formats”(自版本1.2.0 with HIVE-9298)提供格式来支持备选时间戳格式。 例如,yyyy-MM-dd’T’HH:mm:ss.SSS,yyyy-MM-dd’T’HH:mm:ss。

      (2)Dates
      DATE值描述特定的年/月/日,格式为YYYY-MM-DD。 例如,DATE’2013-01-01’。 日期类型没有时间组件。 Date类型支持的值范围是0000-01-01到9999-12-31,这取决于Java Date类型的原始支持。
      Date types只能在Date, Timestamp, or String types之间转换。 

      (3)Intervals

       时间间隔。

    3.复杂数据类型

      Array

      Map

      Struct

      示例

      

    Array:

    create table student(
      sid int,   sname string,   grade array<float>);   desc student; {1,Tom,[99,100,98]}

    Map:

    create table student2(
      sid int,   sname string,   grade map<string,float>);   desc student2; {1,Tom,<'math',100>}

    Combine:

    create table student3(
      sid int,   sname string,   grade array<map<string,float>>);   desc student3; {1,Tom,[<'math',100>,<'english',100>]}

    Struct:

    create table student4(
      sid int,   info struct<name:string,age:int,sex:string>)   desc student4; {1,{'Tom', 10, 'boy'}}
  • 相关阅读:
    中心极限定理
    BCEloss和交叉熵损失的区别
    postgresql的python接口
    DataGrip 2020.1 安装与激活方法
    区块链技术
    TensorRT推理加速推断并提高吞吐量
    纯视觉取代slam做路径规划及避障的思路
    DL重新回顾总结
    OpenCV 轮廓方向
    OpenCV 低通滤波(可设置频率)
  • 原文地址:https://www.cnblogs.com/zzhangyuhang/p/8810054.html
Copyright © 2011-2022 走看看