Hive官方使用手册——数据类型

本文详细介绍了Apache Hive的各种数据类型,包括数值型、Date/Time类型、String Types、Misc Types和Complex Types。其中,强调了Decimal类型的精度和规模变化,以及在不同版本中的差异。还涵盖了Timestamps、Varchar、Char、Dates、Intervals和Union Types等,讨论了它们的使用场景、转换规则和特异性。此外,提到了空值处理和隐式转换的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文为自己翻译的译文,原文地址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types


Hive官方使用手册——数据类型

概述

这里列出了Hive中所有支持的数据类型。有关附加信息,请参阅教程中的类型系统

对于HCatalog支持的数据类型,请参见:

数值型

  • TINYINT (1-byte 有符号整型, 从-128 至 127)
  • SMALLINT (2-byte 有符号整型, 从-32,768 至 32,767)
  • INT/INTEGER (4-byte 有符号整型, 从 -2,147,483,648 至 2,147,483,647)
  • BIGINT (8-byte 有符号整型,从 -9,223,372,036,854,775,808 至 9,223,372,036,854,775,807)
  • FLOAT (4-byte 单精度浮点数 )
  • DOUBLE (8-byte 双精度浮点数)
  • DOUBLE PRECISION (DOUBLE的别名,从Hive 2.2.0开始提供支持)
  • DECIMAL
    • Hive 0.11.0 引入, 38 位的精度
    • Hive 0.13.0 引入了了用户可定义的精度和规模
  • NUMERIC (和 DECIMAL一样,从 Hive 3.0.0开始提供支持)

Date/Time 类型

String Types

Misc Types

  • BOOLEAN
  • BINARY (注: 只是从Hive 0.8.0开始提供支持)

Complex Types

  • arrays: ARRAY<data_type> (注: 从 Hive 0.14起允许负值和非常量表达式。)
  • maps: MAP<primitive_type, data_type> (注: 从 Hive 0.14起允许负值和非常量表达式。)
  • structs: STRUCT<col_name : data_type [COMMENT col_comment], ...>
  • union: UNIONTYPE<data_type, data_type, ...> (注: 只有从Hive 0.7.0开始可用。)

列类型

整数类型 (TINYINTSMALLINTINT/INTEGERBIGINT)

默认情况下,整型文字被认为是INT型的,除非这个数字超过了INT的范围,在这种情况下,它被解释为BIGINT,或者如果在这个数字上出现了以下的后缀。

Type

Postfix

Example

TINYINT

Y

100Y

SMALLINT

S

100S

BIGINT

L

100L 

Version

INTEGER is introduced as a synonym for INT in Hive 2.2.0 (HIVE-14950).

Strings

字符串可以用单引号(')或双引号(')表示。Hive使用c样式在字符串中转义。

Varchar

Varchar类型创建时需要长度说明符(在1和65535之间),它定义了字符串中允许的最大字符数。如果一个字符串值被转换为varchar类型但是超过了长度说明符,那么字符串将自动被截断。字符长度是由字符串中包含的代码点的数量决定的。

跟字符串一样,尾部空格在varchar中非常重要,并且会影响比较结果。

局限性

非通用的UDF不能直接使用varchar类型作为输入参数或返回值。可以创建字符串UDF,varchar值将转换为字符串并传递给UDF。要直接使用varchar参数或返回varchar值,需要创建一个GenericUDF。
如果它们依赖基于反射的方法来检索类型信息,则可能存在其他不支持varchar的上下文。这包括一些SerDe实现。

Version

Varchar datatype was introduced in Hive 0.12.0 (HIVE-4844).

Char

Char类型与Varchar类似,但它们是固定长度的,这意味着比指定长度值短的部分是用空格填充的,因此在比较时,尾随空格并不重要。最大长度固定在255。

CREATE TABLE foo (bar CHAR( 10 ))

Version

Char datatype was introduced in Hive 0.13.0 (HIVE-5191).

Timestamps

支持传统的UNIX时间戳和可选的纳秒精度。

支持的表示方式:

  • 整型数字类型:以秒为单位解释为UNIX时间戳。
  • 浮点数值类型:以秒为单位,以十进制精度解释为UNIX时间戳。
  • 字符串:JDBC兼容java.sql.Timestamp格式 "YYYY-MM-DD HH:MM:SS.fffffffff(9位小数精度)

时间戳实际是不被解释时间而是被存储为来自UNIX时代的偏移量。为转换时区提供方便的UDF(to_utc_timestampfrom_utc_timestamp)。
所有现有的datetime UDF(月、日、年、小时等)都使用TIMESTAMP 数据类型。

文本文件中的时间戳必须使用的格式为: yyyy-mm-dd hh:mm:ss[.f...]。 如果它们是另一种格式,将它们声明为适当的类型(INT、FLOAT、STRING等),并使用UDF将它们转换为时间戳。

在表级别上,可以通过向SerDe属性“时间戳”提供格式来支持其他时间戳格式。格式”(as of release 1.2.0 with HIVE-9298)。例如, yyyy-MM-dd'T'HH:mm:ss.SSS,yyyy-MM-dd'T'HH:mm:ss.

Version

Timestamps were introduced in Hive

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值