您的位置:

Hive 数据类型的详细阐述

一、Hive 数据类型有哪些

Hive支持三类基本数据类型:原始类型、复合类型和其他类型。原始类型包括BOOLEAN、TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、STRING、BINARY、TIMESTAMP和DECIMAL。复合类型包括ARRAY、MAP、STRUCT和UNION。其他类型包括INTERVAL和DATE。

二、Hive 的数据类型

在Hive中,数据类型在物理存储和查询处理中起着重要的作用。虽然Hive支持各种类型,但在决定使用哪种类型时,需要考虑数据的动态、大小和复杂性。下面让我们深入了解几种常见的Hive数据类型。

三、Hive 数据类型无符号

在Hive中,对于整数类型的数据,有一种特殊的类型叫做“无符号整数”,用unsigned修饰。具体地说,下面是Hive中有符号整数类型和无符号整数类型的比较:


类型名称                        存储字节数             最小值                     最大值
TINYINT                        1                      -128                      127
TINYINT UNSIGNED        1                       0                            255
SMALLINT                       2                      -32768                   32767
SMALLINT UNSIGNED      2                      0                           65535
INT                                4                      -2147483648         2147483647
INT UNSIGNED                  4                      0                            4294967295
BIGINT                           8                      -9223372036854775808 9223372036854775807
BIGINT UNSIGNED           8                      0                            18446744073709551615

四、Hive 数据类型 string

STRING是Hive中的一种基本数据类型,用于表示文本字符串。在处理文本数据时,通常需要转换成STRING类型才能进行分析和操作。在Hive中,为了优化对STRING类型的操作,提供了一个特殊的类型VARCHAR,以及它的变体CHAR。


CREATE TABLE table_name (
  column_name_1 VARCHAR(10),
  column_name_2 CHAR(8)
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'

五、Hive 数据类型 Int

INT是Hive中的一种基本数据类型,用于表示带符号的整型数。Hive中的整数类型是基于Java的原始int类型定义的。正常情况下,若不指定长度,则默认是INT。下面是一个创建表时定义INT类型的示例:


CREATE TABLE table_name (
  column_1 INT,
  column_2 INT UNSIGNED
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'

六、Hive 数据类型有哪几种

除了上面提到的基本数据类型,Hive中还有其他两种数据类型:时间戳TIMESTAMP和十进制数DECIMAL。

其中,TIMESTAMP类型表示时间戳,DECIMAL类型则表示十进制数。在Hive中,DECIMAL类型的特殊之处在于它可以指定精度和规模,并且支持四则运算等操作。

七、Hive 的数据模型中包含

Hive的数据模型包含表、分区和桶。表表示一个数据存储单元,分区表示在表中创建带分区的目录,而桶则是对分区的进一步优化。

八、Hive 数据类型压缩格式

Hive支持使用多种压缩格式来减小数据存储的大小。常见的压缩格式包括bzip2、snappy和LZO等。下面是一个使用压缩格式的示例:


CREATE TABLE table_name ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION '/path/to/directory'
TBLPROPERTIES ('serialization.format'='1', 'mapred.output.compress'='true', 'mapred.output.compression.codec'='org.apache.hadoop.io.compress.SnappyCodec')

九、Hive 数据类型map

MAP类型用于表示一组键值对,其中对于每个键都有一个相应的值。Hive中的MAP类型将Java中的Map对象转换成Hive中的MAP。下面是一个使用MAP类型的示例:


CREATE TABLE table_name (
  column_1 map
   ,
  column_2 map
    
) ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'

    
   

十、Hive 数据类型隐式转换

Hive支持自动进行类型转换。在执行查询时,如果需要进行类型转换,则Hive会自动进行转换。这种转换被称为隐式转换。

下面是一些示例:


SELECT * FROM table WHERE int_column = '1234'; -- 字符串会被自动转成INT类型
SELECT * FROM table WHERE int_column + float_column; -- INT列会被自动转成FLOAT类型
SELECT * FROM table WHERE string_column='true'; -- 字符串会被自动转成BOOLEAN类型