hive優化 嚴格模式

2021-08-29 16:15:12 字數 818 閱讀 8357

預設配置為: 

hive.mapred.mode

nonstrict

the mode in which the hive operations are being performed.

in strict mode, some risky queries are not allowed to run. they include:

cartesian product.

no partition being picked up for a query.

comparing bigints and strings.

comparing bigints and doubles.

orderby without limit.

設定引數為:

set hive.mapred.mode = strict;

嚴格模式限制以下查詢:

1、笛卡爾積查詢:join查詢不使用on語句而是使用where語句

關係型資料庫的執行優化器可以高效地將where語句轉化成on語句,hive並不會執行這種優化。

2、查詢沒有選擇分割槽:對於分割槽表,where語句中無分割槽字段過濾條件

不允許使用者掃瞄所有分割槽,因為分割槽表通常資料量巨大,沒有限制分割槽的查詢可能會消耗巨大資源。

3、order by沒有limit語句:

order by 為了執行排序過程,會將所有的結果資料分發到同乙個reducer中進行處理,增加limit語句可以防止reducer額外執行很長一段時間。

4、bigint型別資料與string和double型別比較

hive 嚴格模式

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

hive嚴格模式

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

hive嚴格模式

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