1. 程式人生 > 實用技巧 >hive on spark 精度匹配異常

hive on spark 精度匹配異常

錯誤型別:org.apache.hadoop.hive.ql.parse.SemanticException:Line 55:23 Cannot insert into target table because column number/types are different ''2020-06-14'': Cannot convert column 7 from array<struct<sku_id:string,sku_num:bigint,order_count:bigint,order_amount:decimal(30,2)>> to array<struct<sku_id:string,sku_num:bigint,order_count:bigint,order_amount:decimal(20,2)>>.

錯誤原因:儘管在hive建表時對decimal規定為(20,2),但是hive在計算時就有可能出現浮點數精度轉換為(30,2),所以需要進行精度強轉。 注意在查詢是不會報錯,但是將子查詢結果插入到表中就會出現精度不匹配問題。

解決方法:精度轉換:cast(sum(final_amount_d) as decimal(20,2))

1.建表語句

2.精度匹配異常