Hive的嚴格模式和非嚴格模式

2021-10-11 18:47:16 字數 606 閱讀 4381

通過開啟嚴格模式,主要是為了禁止某些查詢(這些查詢可能造成意想不到的壞的結果),目前主要禁止3種型別的查詢:

1)分割槽表查詢

在查詢乙個分割槽表時,必須在where語句後指定分割槽字段,否則不允許執行。

因為在查詢分割槽表時,如果不指定分割槽查詢,會進行全表掃瞄。而分割槽表通常有非常大的資料量,全表掃瞄非常消耗資源。

2)order by 查詢

order by語句必須帶有limit 語句,否則不允許執行。

因為order by會進行全域性排序,這個過程會將處理的結果分配到乙個reduce中進行處理,處理時間長且影響效能。

3)笛卡爾積查詢

資料量非常大時,笛卡爾積查詢會出現不可控的情況,因此嚴格模式下也不允許執行。

在開啟嚴格模式下,進行上述三種不符合要求的查詢,通常會報類似failed: error in semantic analysis: in strict mode, *** is not allowed. if you really want to perform the operation,+set hive.mapred.mode=nonstrict+

hive 嚴格模式

hive提供了乙個嚴格模式,可以防止使用者執行那些可能產生意向不到的不好的效果的查詢。說通俗一點就是這種模式可以阻止某些查詢的執行。通過如下語句設定嚴格模式 hive set hive.mapred.mode strict hive select distinct planner id from f...

hive嚴格模式

hive嚴格模式 hive提供了乙個嚴格模式,可以防止使用者執行那些可能產生意想不到的不好的效果的查詢。即某些查詢在嚴格 模式下無法執行。1 帶有分割槽的表的查詢 如果在乙個分割槽表執行hive,除非where語句中包含分割槽字段過濾條件來顯示資料範圍,否則不允許執行。換句話說,就是使用者不允許掃瞄...

hive嚴格模式

說真的,這個模式在我做sql開發的歲月裡,從未用到過。用的都是動態分割槽非嚴格模式。我的好友東嶽同學在車上問我。確實問到了我 體現出了我基本功不紮實的情況。hive提供了乙個嚴格模式,可以防止使用者執行那些可能產生意向不到的不好的效果的查詢。說通俗一點就是這種模式可以阻止某些查詢的執行。通過如下語句...