博客地址: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数据类型转换相关推荐

  1. Hive系列 (六):Hive数据类型转换

    文章目录 Hive系列文章 数据类型转换 Cast显示转换 数据类型转换表 日期类型转换说明 转换示例 Hive系列文章 Hadoop完全分布式搭建(腾讯云服务器+阿里云服务器) Hive系列 (一) ...

  2. mysql到hive数据类型转换

    1.类型映射关系 mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表. mys ...

  3. 【hive】mysql到hive数据类型转换

    1.类型映射关系 mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表. mys ...

  4. oracle到hive数据类型转换

    oracle和hive中的数据类型存在差异,在oracle集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和oracle结构一致的表. oracle到hi ...

  5. HIVE 数据类型转换

    Hive内置数据类型由基本数据类型和复杂数据类型组成.今天的话题是Hive数据类型之间的转换.同Java语言一样,Hive也包括 隐式转换(implicit conversions)和显式转换(exp ...

  6. HIVE 数据倾斜浅谈

    HIVE 数据倾斜浅谈 一.数据倾斜现象   map100%,reduce一直卡在一个值,如99%. 二.数据倾斜的原因   数据按key的hash值分配到reduce中,如果有的key值比较集中,就 ...

  7. hive数据倾斜及处理案例

    什么是数据倾斜 数据倾斜其实是进行分布式计算的时候,某些节点的计算能力比较强或者需要计算的数据比较少,早早执行完了,某些节点计算的能力较差或者由于此节点需要计算的数据比较多,导致出现其他节点的redu ...

  8. Hive数据据类型 DDL DML

    Hive的基本数据类型 DDL DML: 基本数据类型 Hive数据类型 Java数据类型 长度 例子 TINYINT byte 1byte有符号整数 20 SMALINT short 2byte有符 ...

  9. 深入浅出Hive数据倾斜,最全面的讲解(好文收藏)

    背景 我们日常使用HIVE SQL的时候可能会遇到这样一个令人苦恼的场景:执行一个非常简单的SQL语句,任务的进度条长时间卡在99%,不确定还需多久才能结束,这种现象称之为数据倾斜.这一现象出现的原因 ...

最新文章

  1. linux卸载hadoop版本,centos6.5 安装hadoop1.2.1的教程详解【亲测版】
  2. iMeta | 中科院生态中心邓晔组发布微生物组网络分析平台iNAP(图文/视频教程)
  3. PHPStorm2016如何安装主题
  4. 鸿蒙系统画饼,任正非说在三年内华为鸿蒙系统即可媲美苹果!真的不是“画饼”?...
  5. 允許Linux的snmp服務被查詢
  6. Java (jdk win 10)
  7. 人工智能时代来临,还需要那么多人吗?
  8. linux shell 变量减法_Linux Shell (3) - 变量运算
  9. 7-31总结----javascript
  10. 快速交付 敏捷开发的特点_敏捷开发的那些事
  11. SQL Server 2005 14420 14421错误
  12. java微信上传图片_微信小程序图片上传java后台(前后端代码)
  13. jvm 的内存分配方式
  14. 人工智能专业就业有哪些岗位方向
  15. HTML+JS调用摄像头
  16. 湖南文理学院计算机宿舍,湖南文理学院宿舍怎么样 住宿条件好不好
  17. 新型发明创造大赛计算机类,参加2019自主招生要具备什么条件?高校更青睐包括专利在内的七大类!...
  18. C#基础编程——简介及基础语法
  19. WSTMart二次开发目录说明
  20. web课程设计网页规划与设计(HTML+CSS+JavaScript仿悦世界游戏官网 6个页面)

热门文章

  1. Oracle11gR2在9x8hk..Windows18669144449 命名进入Oracle
  2. 数据之路 Day5 - Python基础5
  3. 在ubuntu14.04中安装搜狗输入法
  4. liunx 常用命令-cut
  5. Redis单机系列文章--1.Redis单机的安装和配置(含视频)
  6. Cocos2d-x 3.1.1 Lua演示样例 ActionManagerTest(动作管理)
  7. Underlying cause: com.mysql.cj.jdbc.exceptions.CommunicationsException : Communications link failure
  8. Neither spark.yarn.jars nor spark.yarn.archive is set
  9. interactive_timeout和wait_timeout之间的区别
  10. 批量绘制train和test关于特征上的差异