在select中,只拿需要的列,如果有,盡量使用分割槽過濾,少用select *。
在分割槽剪裁中,當使用外關聯時,如果將副表的過濾條件寫在where後面,那麼就會先全表關聯,之後再過濾,比如:
create
table ori(id bigint
,time
bigint
, uid string, keyword string, url_rank int
, click_num int
, click_url string)
row format delimited fields
terminated
by'\t'
;
create
table bigtable(id bigint
,time
bigint
, uid string, keyword string, url_rank int
, click_num int
, click_url string)
row format delimited fields
terminated
by'\t'
;
load
data
local inpath '/home/admin/softwares/data/加遞增id的原始資料/ori'
into
table ori;
load
data
local inpath '/home/admin/softwares/data/100萬條大表資料(id除以10取整)/bigtable'
into
table bigtable;
select a.id
from bigtable a
left
join ori b on a.id = b.id
where b.id <=
10;
正確的寫法是寫在on後面:先where再關聯
select a.id
from ori a
left
join bigtable b on
(b.id <=
10and a.id = b.id)
;
或者直接寫成子查詢:
select a.id
from bigtable a
right
join
(select id
from ori
where id <=
10) b on a.id = b.id;
Hive 調優 動態分割槽調整
關係型資料庫中,對分割槽表insert資料時候,資料庫自動會根據分割槽欄位的值,將資料插入到相應的分割槽中。hive中也提供了類似的機制,即動態分割槽 dynamic partition 只不過,使用hive的動態分割槽,需要進行相應的配置。以第乙個表的分割槽規則,來對應第二個表的分割槽規則,將第乙...
hive效能調優
原文 limit 限制調整 因為使用 limit 語句時候,是先執行整個查詢語句,然後再返回部分結果的 set hive.limit.optimize.enable true set hive.limit.row.max.size 10000 set hive.limit.optimize.limi...
Hive效能調優
軟體環境 hive1.2.1 hadoop2.6.4 直接使用hive cli模式執行 1.設定執行引擎 set hive.execution.engine mr set hive.execution.engine spark 如果設定執行引擎為mr,那麼就會呼叫hadoop的maprecude來執...