預設配置為:
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提供了乙個嚴格模式,可以防止使用者執行那些可能產生意向不到的不好的效果的查詢。說通俗一點就是這種模式可以阻止某些查詢的執行。通過如下語句...