Hive 简明教程

Hive - Data Types

本章将介绍 Hive 中的各种数据类型,这些数据类型都参与表创建。Hive 中的所有数据类型都分为以下四类:

  1. Column Types

  2. Literals

  3. Null Values

  4. Complex Types

Column Types

列类型用作 Hive 的列数据类型。如下所示:

Integral Types

整型数据类型可以使用整数数据类型 INT 指定。当数据范围超过INT的范围时,您需要使用BIGINT,如果数据范围小于INT,则可以使用SMALLINT。TINYINT小于SMALLINT。

下表描绘了各种 INT 数据类型:

Type

Postfix

Example

TINYINT

Y

10Y

SMALLINT

S

10S

INT

-

10

BIGINT

L

10L

String Types

字符串类型数据类型可以使用单引号(')或双引号(")指定。它包含两种数据类型:VARCHAR 和 CHAR。Hive 遵循 C 类型转义字符。

下表列出了各种 CHAR 数据类型:

Data Type

Length

VARCHAR

1 to 65355

CHAR

255

Timestamp

它支持传统的 UNIX 时间戳,并具有可选的纳秒精度。它支持 java.sql.Timestamp 格式“YYYY-MM-DD HH:MM:SS.fffffffff”和格式“yyyy-mm-dd hh:mm:ss.ffffffffff”。

Dates

DATE 值以年/月/日格式描述,形式为 {{YYYY-MM-DD}}。

Decimals

Hive 中的 DECIMAL 类型与 Java 的 Big Decimal 格式相同。它用于表示不可变的任意精度。语法和示例如下:

DECIMAL(precision, scale)
decimal(10,0)

Union Types

Union 是异构数据类型的集合。您可以使用 create union 创建一个实例。语法和示例如下:

UNIONTYPE<int, double, array<string>, struct<a:int,b:string>>

{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}

Literals

Hive 中使用了以下文字:

Floating Point Types

浮点数类型只不过是小数点附近的数字。通常,此类数据由 DOUBLE 数据类型组成。

Decimal Type

Null Value

缺失值由特殊值 NULL 表示。

Complex Types

Hive 复杂数据类型如下:

Arrays

Hive 中的数组与它们在 Java 中的使用方式相同。

Syntax: ARRAY<data_type>

Maps

Hive 中的映射与 Java 映射类似。

Syntax: MAP<primitive_type, data_type>

Structs

Hive 中的结构类似于使用带有注释的复杂数据。

Syntax: STRUCT<col_name : data_type [COMMENT col_comment], ...>