關於sqoop導入數據到hive數據庫當中,表中數據為空倒入hive當中的處理
阿新 • • 發佈:2018-10-23
轉化 hive數據庫 是不是 技術 關於 trim 如果 col 去掉
今天在hive數據庫當中查詢一張表,查詢數據為空的值,但是死活就是匹配不到:
查詢語句如下:
select * from loan_repayment_detail where trim(fact_return_date) is null
本來想著是不是因為前面有空格的原因,但是去掉了空格之後還是不可以。
我直接插尋這個字段是有值的啊,也是為null,為啥就不可以啊。原來真正的問題的源頭是從我們使用sqoop導入數據開始的。在sqoop導入數據的時候如果不對null做處理,他會將原來為null的值導入的時候
轉化為null的字符串,不是真正意義上面的null值。所以當我們使用is null 的時候就匹配不到數據。這才是問題的關鍵:
然後我執行了一下下面這個語句就可以了:
所以我們在通過sqoop導入數據的時候,需要加上
--null-string ‘\\N‘
--null-non-string ‘\\N‘
這個是因為在hive裏面的,null值是用\N來表示的,所以需要將原理啊的null的字符串進行轉換之後,才能匹配到真正意義上的null值,而不是字符串類型的null值。
至此問題得到了解決。
關於sqoop導入數據到hive數據庫當中,表中數據為空倒入hive當中的處理