计算机系统应用教程网站

网站首页 > 技术文章 正文

0572-5.16.1-Hive中decimal类型字段.0结尾数据显示异常问题处理

btikc 2024-10-12 10:57:15 技术文章 10 ℃ 0 评论

作者:辉少

1.问题描述


Fayson今天在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;





参考:

1、Apache HIVE-12063问题记录地址:

https://issues.apache.org/jira/browse/HIVE-12063

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表