亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

台湾省| 小金县| 德昌县| 闵行区| 平顶山市| 洞口县| 鹰潭市| 泗洪县| 万源市| 含山县| 北京市| 积石山| 克山县| 巴南区| 长乐市| 绥阳县| 抚宁县| 龙门县| 家居| 奉节县| 阜宁县| 郸城县| 玉屏| 武乡县| 西丰县| 喀喇沁旗| 衡南县| 广灵县| 沙雅县| 西盟| 望奎县| 惠东县| 壤塘县| 汽车| 朔州市| 武安市| 大城县| 兖州市| 清涧县| 襄汾县| 化德县|