hive数据类型转换
博客地址:http://www.iteblog.com/
文章标题:《Hive数据类型转换》
本文链接:http://www.iteblog.com/archives/892
Hadoop、Hive、Hbase、Flume等QQ交流群:138615359(已满),请加入新群:149892483
本博客的微信公共帐号为:iteblog_hadoop,欢迎大家关注。
如果你觉得本文对你有帮助,不妨分享一次,你的每次支持,都是对我最大的鼓励
写在前面的话,学Hive这么久了,发现目前国内还没有一本完整的介绍Hive的书籍,而且互联网上面的资料很乱,于是我决定写一些关于《Hive的那些事》序列文章,分享给大家。我会在接下来的时间整理有关Hive的资料,如果对Hive的东西感兴趣,请关注本博客。http://www.iteblog.com/archives/tag/hive的那些事
在《Hive内置数据类型》文章中,我们提到了Hive内置数据类型由基本数据类型和复杂数据类型组成。今天的话题是Hive数据类型之间的转换。同Java语言一样,Hive也包括隐式转换(implicit conversions)和显式转换(explicitly conversions)。
Hive在需要的时候将会对numeric类型的数据进行隐式转换。比如我们对两个不同数据类型的数字进行比较,假如一个数据类型是INT型,另一个是SMALLINT类型,那么SMALLINT类型的数据将会被隐式转换地转换为INT类型,这个到底和Java中的一样;但是我们不能隐式地将一个INT类型的数据转换成SMALLINT或TINYINT类型的数据,这将会返回错误,除非你使用了CAST操作。
任何整数类型都可以隐式地转换成一个范围更大的类型。TINYINT,SMALLINT,INT,BIGINT,FLOAT和STRING都可以隐式地转换成DOUBLE;是的你没看出,STRING也可以隐式地转换成DOUBLE!但是你要记住,BOOLEAN类型不能转换为其他任何数据类型!
下标列出了Hive内置的数据类型之间是否可以进行隐式的转换操作:
bl | tinyint | si | int | bigint | float | double | dm | string | vc | ts | date | ba | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
boolean | true | false | false | false | false | false | false | false | false | false | false | false | false |
tinyint | false | true | true | true | true | true | true | true | true | true | false | false | false |
smallint | false | false | true | true | true | true | true | true | true | true | false | false | false |
int | false | false | false | true | true | true | true | true | true | true | false | false | false |
bigint | false | false | false | false | true | true | true | true | true | true | false | false | false |
float | false | false | false | false | false | true | true | true | true | true | false | false | false |
double | false | false | false | false | false | false | true | true | true | true | false | false | false |
decimal | false | false | false | false | false | false | false | true | true | true | false | false | false |
string | false | false | false | false | false | false | true | true | true | true | false | false | false |
varchar | false | false | false | false | false | false | true | true | true | true | false | false | false |
ts | false | false | false | false | false | false | false | false | true | true | true | false | false |
date | false | false | false | false | false | false | false | false | true | true | false | true | false |
binary | false | false | false | false | false | false | false | false | false | false | false | false | true |
注:由于表格比较大,这里对一些比较长的字符串进行缩写,ts是timestamp的缩写,bl是boolean的缩写,sl是smallint的缩写,dm是decimal的缩写,vc是varchar的缩写,ba是binary的缩写。
我们可以用CAST来显式的将一个类型的数据转换成另一个数据类型。如何使用?CAST的语法为cast(value AS TYPE)。举个例子:假如我们一个员工表employees,其中有name、salary等字段;salary是字符串类型的。有如下的查询:
1
|
SELECT name, salary FROM employees
|
2
|
WHERE cast(salary AS FLOAT) < 100000.0 ;
|
这样salary将会显示的转换成float。如果salary是不能转换成float,这时候cast将会返回NULL!
对cast有一下几点需要说明的:
(1)、如果将浮点型的数据转换成int类型的,内部操作是通过round()或者floor()函数来实现的,而不是通过cast实现!
(2)、对于BINARY类型的数据,只能将BINARY类型的数据转换成STRING类型。如果你确信BINARY类型数据是一个数字类型(a number),这时候你可以利用嵌套的cast操作,比如a是一个BINARY,且它是一个数字类型,那么你可以用下面的查询:
1
|
SELECT (cast(cast(a as string) as double )) from src;
|
我们也可以将一个String类型的数据转换成BINARY类型。
(3)、对于Date类型的数据,只能在Date、Timestamp以及String之间进行转换。下表将进行详细的说明:
有效的转换 | 结果 |
cast(date as date) | 返回date类型 |
cast(timestamp as date) | timestamp中的年/月/日的值是依赖与当地的时区,结果返回date类型 |
cast(string as date) | 如果string是YYYY-MM-DD格式的,则相应的年/月/日的date类型的数据将会返回;但如果string不是YYYY-MM-DD格式的,结果则会返回NULL。 |
cast(date as timestamp) | 基于当地的时区,生成一个对应date的年/月/日的时间戳值 |
cast(date as string) | date所代表的年/月/日时间将会转换成YYYY-MM-DD的字符串。 |
本博客文章除特别声明,全部都是原创!
尊重原创,转载请注明: 转载自过往记忆(http://www.iteblog.com/)
本文链接地址: 《Hive数据类型转换》(http://www.iteblog.com/archives/892)
E-mail:wyphao.2007@163.com
转载于:https://blog.51cto.com/9352163/1548181
hive数据类型转换相关推荐
- Hive系列 (六):Hive数据类型转换
文章目录 Hive系列文章 数据类型转换 Cast显示转换 数据类型转换表 日期类型转换说明 转换示例 Hive系列文章 Hadoop完全分布式搭建(腾讯云服务器+阿里云服务器) Hive系列 (一) ...
- mysql到hive数据类型转换
1.类型映射关系 mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表. mys ...
- 【hive】mysql到hive数据类型转换
1.类型映射关系 mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表. mys ...
- oracle到hive数据类型转换
oracle和hive中的数据类型存在差异,在oracle集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和oracle结构一致的表. oracle到hi ...
- HIVE 数据类型转换
Hive内置数据类型由基本数据类型和复杂数据类型组成.今天的话题是Hive数据类型之间的转换.同Java语言一样,Hive也包括 隐式转换(implicit conversions)和显式转换(exp ...
- HIVE 数据倾斜浅谈
HIVE 数据倾斜浅谈 一.数据倾斜现象 map100%,reduce一直卡在一个值,如99%. 二.数据倾斜的原因 数据按key的hash值分配到reduce中,如果有的key值比较集中,就 ...
- hive数据倾斜及处理案例
什么是数据倾斜 数据倾斜其实是进行分布式计算的时候,某些节点的计算能力比较强或者需要计算的数据比较少,早早执行完了,某些节点计算的能力较差或者由于此节点需要计算的数据比较多,导致出现其他节点的redu ...
- Hive数据据类型 DDL DML
Hive的基本数据类型 DDL DML: 基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符 ...
- 深入浅出Hive数据倾斜,最全面的讲解(好文收藏)
背景 我们日常使用HIVE SQL的时候可能会遇到这样一个令人苦恼的场景:执行一个非常简单的SQL语句,任务的进度条长时间卡在99%,不确定还需多久才能结束,这种现象称之为数据倾斜.这一现象出现的原因 ...
最新文章
- linux卸载hadoop版本,centos6.5 安装hadoop1.2.1的教程详解【亲测版】
- iMeta | 中科院生态中心邓晔组发布微生物组网络分析平台iNAP(图文/视频教程)
- PHPStorm2016如何安装主题
- 鸿蒙系统画饼,任正非说在三年内华为鸿蒙系统即可媲美苹果!真的不是“画饼”?...
- 允許Linux的snmp服務被查詢
- Java (jdk win 10)
- 人工智能时代来临,还需要那么多人吗?
- linux shell 变量减法_Linux Shell (3) - 变量运算
- 7-31总结----javascript
- 快速交付 敏捷开发的特点_敏捷开发的那些事
- SQL Server 2005 14420 14421错误
- java微信上传图片_微信小程序图片上传java后台(前后端代码)
- jvm 的内存分配方式
- 人工智能专业就业有哪些岗位方向
- HTML+JS调用摄像头
- 湖南文理学院计算机宿舍,湖南文理学院宿舍怎么样 住宿条件好不好
- 新型发明创造大赛计算机类,参加2019自主招生要具备什么条件?高校更青睐包括专利在内的七大类!...
- C#基础编程——简介及基础语法
- WSTMart二次开发目录说明
- web课程设计网页规划与设计(HTML+CSS+JavaScript仿悦世界游戏官网 6个页面)
热门文章
- Oracle11gR2在9x8hk..Windows18669144449 命名进入Oracle
- 数据之路 Day5 - Python基础5
- 在ubuntu14.04中安装搜狗输入法
- liunx 常用命令-cut
- Redis单机系列文章--1.Redis单机的安装和配置(含视频)
- Cocos2d-x 3.1.1 Lua演示样例 ActionManagerTest(动作管理)
- Underlying cause: com.mysql.cj.jdbc.exceptions.CommunicationsException : Communications link failure
- Neither spark.yarn.jars nor spark.yarn.archive is set
- interactive_timeout和wait_timeout之间的区别
- 批量绘制train和test关于特征上的差异