hive有乙個嚴格模式,在嚴格模式下會對可能產生較大查詢結果的語句做限制,禁止其提交執行。
檢視當前的模式:
hive> set hive.mapred.mode;未定義即為false,即no-strict模式。hive.mapred.mode is undefined
開啟嚴格模式:
set hive.mapred.mode=strict;關閉嚴格模式:
set hive.mapred.mode=undefined;分割槽表的資料量通常都比較大,對分割槽表的查詢必須使用到分割槽相關的字段,不允許掃瞄所有分割槽,想想也是如果掃瞄所有分割槽的話那麼對錶進行分割槽還有什麼意義呢。
當然某些特殊情況可能還是需要掃瞄所有分割槽,這個時候就需要記得確保嚴格模式被關閉。
因為要保證全域性有序需要將所有的資料拉到乙個reducer上,當資料集比較大時速度會很慢。個人猜測可能是設定了limit n之後就會有乙個很簡單的優化演算法:每個reducer排序取n然後再合併排序取n即可,可大大減少資料傳輸量。
hive不會對where中的連線條件優化為on,所以join必須帶有on連線條件,不允許兩個表直接相乘。
hive 嚴格模式
hive提供了乙個嚴格模式,可以防止使用者執行那些可能產生意向不到的不好的效果的查詢。說通俗一點就是這種模式可以阻止某些查詢的執行。通過如下語句設定嚴格模式 hive set hive.mapred.mode strict hive select distinct planner id from f...
hive嚴格模式
hive嚴格模式 hive提供了乙個嚴格模式,可以防止使用者執行那些可能產生意想不到的不好的效果的查詢。即某些查詢在嚴格 模式下無法執行。1 帶有分割槽的表的查詢 如果在乙個分割槽表執行hive,除非where語句中包含分割槽字段過濾條件來顯示資料範圍,否則不允許執行。換句話說,就是使用者不允許掃瞄...
hive嚴格模式
說真的,這個模式在我做sql開發的歲月裡,從未用到過。用的都是動態分割槽非嚴格模式。我的好友東嶽同學在車上問我。確實問到了我 體現出了我基本功不紮實的情況。hive提供了乙個嚴格模式,可以防止使用者執行那些可能產生意向不到的不好的效果的查詢。說通俗一點就是這種模式可以阻止某些查詢的執行。通過如下語句...