hive中使用is null和is not null問題

   在使用HQL時如果有空值喜歡追隨SQL99的規範使用IS NULL 和IS NOT NULL來判斷,這個是一般的思維習慣。但是在hive中跟傳統的數據庫不一樣的地方在於NULL的解讀。

在傳統數據庫中字段沒有值或者爲空即表示爲NULL,但是在hive中默認的NULL值是\N,對沒錯,就是\N。在hive中會把文本的\N解析爲NULL。在使用IS NULL 或者IS NOT NULL時會過濾數據。

如果想延續傳統數據庫中對於空值爲NULL,可以通過alter語句來修改hive表的信息,保證解析時是按照空值來解析NULL值。語句如下:

alter table ljn005 SETSERDEPROPERTIES('serialization.null.format' ='');

這樣就可以修改默認的NULL值的定義了。比如這裏定義alter table ljn005 SETSERDEPROPERTIES('serialization.null.format' ='abc'); 則以後出現abchive都會把這個解析爲NULL值。

這裏一定要謹記。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章