温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

HIVE有哪些数据类型

发布时间:2021-09-09 09:49:22 来源:亿速云 阅读:156 作者:chen 栏目:编程语言

本篇内容主要讲解“HIVE有哪些数据类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HIVE有哪些数据类型”吧!

1. 数值型
类型 后缀 例子
TINYINT Y 100Y
SMALLINT S 100S
BIGINT L 100L

INTEGER is introduced as a synonym for INT in Hive 2.2.0 (HIVE-14950). 
2. Decimals 
Hive的小数型是基于Java BigDecimal做的, BigDecimal在java中用于表示任意精度的小数类型。所有常规数字运算(例如+, - ,*,/)和相关的UDFs(例如Floor,Ceil,Round等等)都使用和支持Decimal。你可以将Decimal和其他数值型互相转换,且Decimal支持科学计数法和非科学计数法。因此,无论您的数据集是否包含如4.004E + 3(科学记数法)或4004(非科学记数法)或两者的组合的数据,可以使用Decimal。 
从Hive 0.13开始,用户可以使用DECIMAL(precision, scale) 语法在创建表时来定义Decimal数据类型的precision和scale。 如果未指定precision,则默认为10。如果未指定scale,它将默认为0(无小数位)。

CREATE TABLE foo ( 
a DECIMAL, – Defaults to decimal(10,0) 
b DECIMAL(9, 7) 
)

大于BIGINT的数值,需要使用BD后缀以及Decimal(38,0)来处理,例:

select CAST(18446744073709001000BD AS DECIMAL(38,0)) from my_table limit 1;

Decimal在Hive 0.12.0 and 0.13.0之间是不兼容的,故0.12前的版本需要迁移才可继续使用,具体情况参见官网。

类型 支持版本
TIMESTAMP Note: Only available starting with Hive 0.8.0
DATE Note: Only available starting with Hive 0.12.0
INTERVAL Note: Only available starting with Hive 1.2.0

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. 字符型

1.Strings 
字符串文字可以用单引号(’)或双引号(“)表示。Hive在字符串中使用C风格的转义。 
2. Varchar 
Varchar类型使用长度说明符(介于1和65355之间)创建,它定义字符串中允许的最大字符数。 如果要转换/分配给varchar值的字符串值超过length说明符,则字符串将被静默截断。 字符长度由字符串包含的代码点的数量确定。 
像字符串一样,尾部空格在varchar中很重要,并且会影响比较结果。 
非通用UDFs不能直接使用varchar类型作为输入参数或返回值。 可以创建字符串UDFs,而varchar值将被转换为strings并传递到UDF。 要直接使用varchar参数或返回varchar值,请创建GenericUDF。 
如果基于reflection-based方法来获取数据类型信息,则可能存在不支持varchar的场景。 这包括一些SerDe函数实现。 
3. Char 
字符类型与Varchar类似,但它们是固定长度的,意味着比指定长度值短的值用空格填充,但尾随空格在比较期间不重要。 最大长度固定为255。

CREATE TABLE foo (bar CHAR(10))

5. 复杂类型

<table font-size:16px;background-color:#FFFFFF;">

类型
支持版本
arrays ARRAY(data_type) Note: negative values and non-constant expressions are allowed as of Hive 0.14.
maps MAP(primitive_type, data_type) Note: negative values and non-constant expressions are allowed as of Hive 0.14.
structs STRUCTcol_name : data_type [COMMENT col_comment], …)
union UNIONTYPE(data_type, data_type, …) Note: Only available starting with Hive 0.7.0.

到此,相信大家对“HIVE有哪些数据类型”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI