小编给大家分享一下如何解决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);
执行查询语句,结果如下图所示
SELECT * FROM decimaltest;
2
问题分析
上图中我们可以看到以.0结尾的数据在Hive 中都不会显示末尾的.0,而以非.0 结尾的数据则没有该问题。
在apache官网中找到已知的问题记录HIVE-12063,该问题影响版本包括0.14.0、1.0.0、1.2.0、1.1.0、0.13…
而Fayson所用的CDH版本为5.16.1,Hive 版本为1.1.0,在受影响的版本范围内,Hive版本查看如下:
3
问题解决
关于在CDH的中Hive的版本,C5的Hive版本为1.1.0,而在CDH 6.1.X 的Hive 版本为2.1.1。并且在Cloudera 的官网C6版本的发行说明中也是有提到关于该问题的处理。于是Fayson便在CDH 6.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);
执行查询语句,结果如下图所示,发现在Hive2.1.1中不仅修复了末尾的.0 问题,并且根据设置的小数点位数进行自动补零。
SELECT * FROM decimaltest;
看完了这篇文章,相信你对“如何解决Hive中decimal类型字段.0结尾数据显示异常问题”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!