小編給大家分享一下如何解決Hive中decimal類型字段.0結(jié)尾數(shù)據(jù)顯示異常問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
創(chuàng)新互聯(lián)建站專注于安州企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城系統(tǒng)網(wǎng)站開發(fā)。安州網(wǎng)站建設(shè)公司,為安州等地區(qū)提供建站服務(wù)。全流程按需求定制設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
問題描述
在Hive中插入字段類型為decimal的數(shù)據(jù)時發(fā)現(xiàn),插入數(shù)據(jù)為1.0, 1.000等以 .0結(jié)尾的數(shù)據(jù)在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);
執(zhí)行查詢語句,結(jié)果如下圖所示
SELECT * FROM decimaltest;
2
問題分析
上圖中我們可以看到以.0結(jié)尾的數(shù)據(jù)在Hive 中都不會顯示末尾的.0,而以非.0 結(jié)尾的數(shù)據(jù)則沒有該問題。
在apache官網(wǎng)中找到已知的問題記錄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,在受影響的版本范圍內(nèi),Hive版本查看如下:
3
問題解決
關(guān)于在CDH的中Hive的版本,C5的Hive版本為1.1.0,而在CDH 6.1.X 的Hive 版本為2.1.1。并且在Cloudera 的官網(wǎng)C6版本的發(fā)行說明中也是有提到關(guān)于該問題的處理。于是Fayson便在CDH 6.1.0的版本來驗證該問題是否已經(jīng)解決。
創(chuàng)建測試表并插入數(shù)據(jù)
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);
執(zhí)行查詢語句,結(jié)果如下圖所示,發(fā)現(xiàn)在Hive2.1.1中不僅修復(fù)了末尾的.0 問題,并且根據(jù)設(shè)置的小數(shù)點位數(shù)進行自動補零。
SELECT * FROM decimaltest;
看完了這篇文章,相信你對“如何解決Hive中decimal類型字段.0結(jié)尾數(shù)據(jù)顯示異常問題”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!