您好,登錄后才能下訂單哦!
小編給大家分享一下如何解決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結尾數據顯示異常問題”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。