Hive数据类型(转:https://blog.csdn.net/xiaoqi0531/article/details/54667393)

本文主要是介绍Hive数据类型(转:https://blog.csdn.net/xiaoqi0531/article/details/54667393),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Hive数据类型

本文参考Apache官网,更多内容请参考:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

1. 数值型

这里写图片描述
1. Integral Types (TINYINT, SMALLINT, INT/INTEGER, BIGINT)
默认情况下,整数型为INT型,当数字大于INT型的范围时,会自动解释执行为BIGINT,或者使用以下后缀进行说明。
这里写图片描述

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前的版本需要迁移才可继续使用,具体情况参见官网。

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
时间间隔在1.2.0之后版本支持,在2.2.0版本上进行了扩展,具体情况参见官网。

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))

4. 其他

BOOLEAN
BINARY (Note: Only available starting with Hive 0.8.0)

5. 复杂类型

这里写图片描述

注:UNIONTYPE目前还没有完全支持,官方建议只用于查看,详见官方文档。

这篇关于Hive数据类型(转:https://blog.csdn.net/xiaoqi0531/article/details/54667393)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918217

相关文章

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

基于.NET编写工具类解决JSON乱码问题

《基于.NET编写工具类解决JSON乱码问题》在开发过程中,我们经常会遇到JSON数据处理的问题,尤其是在数据传输和解析过程中,很容易出现编码错误导致的乱码问题,下面我们就来编写一个.NET工具类来解... 目录问题背景核心原理工具类实现使用示例总结在开发过程中,我们经常会遇到jsON数据处理的问题,尤其是

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字