如何解决Hive中decimal类型字段.0结尾数据显示异常问题

发布时间:2021-12-13 10:16:20 作者:小新
来源:亿速云 阅读:1730

小编给大家分享一下如何解决Hive中decimal类型字段.0结尾数据显示异常问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

问题描述

在Hive中插入字段类型为decimal的数据时发现,插入数据为1.0, 1.000等以 .0结尾的数据在hive中显示为1,即不显示末尾的.0 ,如下:

CREATE TABLE decimaltest (d decimal(18,7));
INSERT INTO decimaltest values (1.000000);
INSERT INTO decimaltest values (1.000001);
INSERT INTO decimaltest values (2.000);
INSERT INTO decimaltest values (2.00001);

如何解决Hive中decimal类型字段.0结尾数据显示异常问题

执行查询语句,结果如下图所示

SELECT * FROM decimaltest;

如何解决Hive中decimal类型字段.0结尾数据显示异常问题

2

问题分析

上图中我们可以看到以.0结尾的数据在Hive 中都不会显示末尾的.0,而以非.0 结尾的数据则没有该问题。

在apache官网中找到已知的问题记录HIVE-12063,该问题影响版本包括0.14.0、1.0.0、1.2.0、1.1.0、0.13…

如何解决Hive中decimal类型字段.0结尾数据显示异常问题

而Fayson所用的CDH版本为5.16.1,Hive 版本为1.1.0,在受影响的版本范围内,Hive版本查看如下:

如何解决Hive中decimal类型字段.0结尾数据显示异常问题

3

问题解决

关于在CDH的中Hive的版本,C5的Hive版本为1.1.0,而在CDH 6.1.X 的Hive 版本为2.1.1。并且在Cloudera 的官网C6版本的发行说明中也是有提到关于该问题的处理。于是Fayson便在CDH 6.1.0的版本来验证该问题是否已经解决。

如何解决Hive中decimal类型字段.0结尾数据显示异常问题

创建测试表并插入数据

CREATE TABLE decimaltest (d decimal(18,7));
INSERT INTO decimaltest values (1.000000);
INSERT INTO decimaltest values (1.000001);
INSERT INTO decimaltest values (2.000);
INSERT INTO decimaltest values (2.00001);

如何解决Hive中decimal类型字段.0结尾数据显示异常问题

执行查询语句,结果如下图所示,发现在Hive2.1.1中不仅修复了末尾的.0 问题,并且根据设置的小数点位数进行自动补零。

SELECT * FROM decimaltest;

如何解决Hive中decimal类型字段.0结尾数据显示异常问题

看完了这篇文章,相信你对“如何解决Hive中decimal类型字段.0结尾数据显示异常问题”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. hive的数据类型
  2. MySQL数据类型DECIMAL用法

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

hive

上一篇:开启Sentry后LOAD DATA异常怎么办

下一篇:服务器机房搭建中的线缆布放原则是什么

相关阅读

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

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