中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hive和Imapla查詢decimal類型結果不同的異常該怎么解決

發布時間:2021-12-09 15:53:24 來源:億速云 閱讀:347 作者:柒染 欄目:大數據

這期內容當中小編將會給大家帶來有關Hive和Imapla查詢decimal類型結果不同的異常該怎么解決,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

異常重現      

1.當前集群HDFS上/tmp/newfile目錄下存在文件hive.txt

[root@cdp4 ~]# mkdir /data/ZK
[root@cdp4 ~]# 

Hive和Imapla查詢decimal類型結果不同的異常該怎么解決

2.從Hue中創建一個hive表test如下

create external table test (s1 string,s2 decimal(13,2)) row format delimited fields terminated by '#' stored as textfile location '/tmp/newfile'    

Hive和Imapla查詢decimal類型結果不同的異常該怎么解決

3.在Hive中進行查詢,可以看到結果如下圖。

select * from test

Hive和Imapla查詢decimal類型結果不同的異常該怎么解決

4.在Impala中進行查詢,可以看到s2列全部為空

Hive和Imapla查詢decimal類型結果不同的異常該怎么解決

同樣的表,在Hive和Impala中分別進行查詢,結果不同,異常得以重現。

異常分析    

   

   

   

根據異常重現部分的步驟,S2字段的數據類型是decimal(13,2)。精度只有2位,但是我們原始數據小數點后都是有3位小數。Hive在這里進行查詢的時候會損失精度,打印結果。但是Impala在查詢的時候,校驗decimal類型會更嚴格,當前的原始數據精度超過了S2字段設定的數據類型的精度,所以直接返回為空。

異常解決    

   

   

   

根據上面的分析,是由于數據的精度超過了S2字段的設定,這里可以通過改變字段類型來進行解決。

1.在Hue中執行下面的SQL進行字段類型的變更

ALTER TABLE test CHANGE s2 s2 string

Hive和Imapla查詢decimal類型結果不同的異常該怎么解決

2.再次進行查詢,可以看到Impala中可以查到數據了,并且可以看到S2字段的數據類型已經變成了string

Hive和Imapla查詢decimal類型結果不同的異常該怎么解決

3.由于數據類型變了,我們再從hive中查詢,可以看到,查詢結果也變化了,跟Impala中的查詢結果一致。

Hive和Imapla查詢decimal類型結果不同的異常該怎么解決

在Hive和Impala同時間遇到精度不匹配的情況的時候,Hive會通過損失精度來輸出結果,同樣的情況,Impala則會直接返回NULL。

在建表的時候,如果涉及到decimal數據類型,我們需要根據原始數據的精度,來設計好相關的參數,避免出現精度丟失的情況。

如果由于歷史原因,當前的表中已經出現精度丟失,我們可以通過轉換數據類型,來進行處理。可以先轉換成string類型,進行查詢。后面也可以根據表的數據范圍,再修改成其他精度匹配的數據類型,進行處理。

上述就是小編為大家分享的Hive和Imapla查詢decimal類型結果不同的異常該怎么解決了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

包头市| 华宁县| 启东市| 都昌县| 丽水市| 焉耆| 隆化县| 三明市| 百色市| 龙泉市| 鄂尔多斯市| 松江区| 漳浦县| 鱼台县| 新丰县| 广灵县| 城市| 瑞昌市| 宁国市| 宁安市| 沁阳市| 万源市| 大化| 句容市| 克拉玛依市| 扬州市| 庆云县| 柳州市| 尼玛县| 益阳市| 辉南县| 高清| 怀远县| 徐闻县| 平和县| 邢台市| 南京市| 大庆市| 同心县| 巴青县| 赣州市|