1)fetch抓取:
2)本地模式:
3)表的優化:
3.2)大表 join 大表
3.3)mapjoin
// 預設為true
set hive.auto.convert.join = true;
3.5
)count(distinct) :
3.6)笛卡爾積:
4)使用分割槽剪裁、列剪裁
:
5
)並行模式:
// 開啟任務並行執行
set hive.exec.parallel=true;
// 同乙個sql允許並行任務的最大執行緒數
set hive.exec.parallel.thread.number=8;
6)嚴格模式:
和動態分割槽的嚴格模式區分開:
set hive.exec.dynamic.partition.mode=strict
hive.mapred.mode
strict
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.
7)jvm 重用:
//一直占用的 task 插槽數
set mapred.job.reuse.jvm.num.tasks=10;
8)推測執行:
set mapred.map.tasks.speculative.execution = true
set mapred.reduce.tasks.speculative.execution = true
9)壓縮與儲存:
各種壓縮方式對比:
hadoop 編/解碼器方式 :
壓縮效能的比較:
要在hadoop中啟用壓縮,可以配置如下引數(mapred-site.xml檔案中):
開啟map輸出階段壓縮:
開啟reduce輸出階段壓縮:
注:權威指南第三版說lzo是不可分割的壓縮格式,可是我的一張表使用儲存rcfile+lzo,在跑hive的時候,產生了很多的map!!!後查閱資料:lzo檔案加上index之後可以做分割解壓!具體參考:
盡量使用 orc、parquet 這些列式儲存格式,列式儲存物理上連續,查詢只需要遍歷列資料
eg:10)使用 explain(執行計畫):
11)資料傾斜:
hive效能調優總結
1.fetch抓取 hive.fetch.task.conversion more 在某些情況下不必要使用mr計算。hive預設是minimal,該屬性修改為more以後,在全域性查詢 字段查詢 limit查詢等都不走mapreduce。2.本地模式 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來執...