今天在使用array_contains對collect_set的結果集和xxx字段的内容進行判斷,但是判斷結果不符合預期。
排查發現xxx字段是String類型的,在進行算數運算後,結果被轉為Double類型,和collect_set的int類型不一緻,進而導緻結果與預期不符。
驗證如下:
總結:1、Hive在需要的時候将會對numeric類型的資料進行隐式轉換
2、Hive也包括 隐式轉換(implicit conversions)和顯式轉換(explicitly conversions)
3、使用cast(字段 as 類型) 實作顯示轉換
4、任何整數類型都可以隐式地轉換成一個範圍更大的類型,BOOLEAN類型不能轉換為其他任何資料類型
5、在使用String類型進行算數運算時,一定要注意,必要時使用顯示轉換。