Hive2.3.3 不等於運算解決方案
阿新 • • 發佈:2018-12-10
Hive都2.0時代了,但好像在聯表查詢時對!=或者<>支援的不是很好。
昨天進行聯表查詢時,利用兩個表的userid進行等值關聯,查詢結果正確,hql如下: select t1.* from subscribe_log_info t1,t_news_fan_analysis_day t2 where t1.userid = t2.userid; 但使用不等於運算子(!=和<>都試了),查詢出很多重複記錄,hql如下: select t1.* from subscribe_log_info t1,t_news_fan_analysis_day t2 where t1.userid <> t2.userid;
各種百度、嘗試無果。後來使用 not in語句查詢出正確的結果,但是效率太低,兩個表的資料加起來不過七十條,竟然用了200多秒(個人桌上型電腦上的虛擬機器,記憶體快佔滿了),這上生產還了得?果斷放棄,最後使用如下hql搞定,查詢時間大概在50秒左右,放到生產環境的伺服器上預計20秒左右執行完畢: select t1.* from subscribe_log_info t1 left outer join t_news_fan_analysis_day t2 on t1.userid = t2.userid where t2.userid is null;
大家要是知道原因請告訴我一聲哈!