hiveQL 優化
1.當hive執行join記憶體溢位時,可以修改hive的配置檔案hive-site.xml,增大記憶體,如下: mapred.child.java.opts -Xmx 1024m
2.hive預設建表時的路徑也可以在hive-site.xml裡配置,如下: hive.metastore.warehouse.dir value >/user/hive/warehouse description >location of default database for the warehouse
3.執行join操作的時候,儘量把小表放前面,大表放前面可能會因為記憶體溢位而出錯
4.對分割槽表進行操作需要對分割槽進行過濾(如:ds=$yday)。 特別是在JOIN操作的時候,分割槽過濾(如:ds=$yday)需要放到 ON語句 或子查詢 裡面。不能放到ON後面的WHERE裡,這樣會掃描所有表,最後才判斷分割槽。也就是說程式會先執行JOIN操作,才會執行最後的WHERE操作。
5.在JOIN操作中,後面被連續JOIN且同一欄位,只會執行一個mapreduce操作。 SELECT * FROM a LEFT OUTER JOIN b ON a.t=b.t LEFT OUTER JOIN c ON a.t=c.t; 推薦的 SELECT * FROM a LEFT OUTER JOIN b ON a.t=b.t LEFT OUTER JOIN c ON b.t=c.t; 效率低下的
6.當一個大表和一個很小的表進行JOIN操作的時候,使用MAPJOIN操作,這樣會把小表讀入記憶體進行JOIN,只需要一個map操作JOIN就完成了 select /*+ mapjoin(a)*/ a.c1,b.c2,b.c3 from a join b on a.c4=b.c4;
7.通過設定hive.merge.mapfiles可以關閉hive對於掃描表的優化,但有時候會提高效率。預設值為true。可以視情況設定:只含有SELECT的語句 或 MAPJOIN 推薦使用
8.ALTER TABLE a SET SERDEPROPERTIES('serialization.null.format' = ''); 可以使結果表不出現\N字串,而用空串代替
相關文章
- HiveQL詳解Hive
- HiveQL應用體驗Hive
- hive學習筆記之六:HiveQL基礎Hive筆記
- 前端效能優化(JS/CSS優化,SEO優化)前端優化JSCSS
- 效能優化案例-SQL優化優化SQL
- MSSQL優化之索引優化SQL優化索引
- CUDA優化之指令優化優化
- Android效能優化----卡頓優化Android優化
- 資料庫優化 - SQL優化資料庫優化SQL
- 【前端效能優化】vue效能優化前端優化Vue
- 前端效能優化 --- 圖片優化前端優化
- sql優化之邏輯優化SQL優化
- [效能優化]DateFormatter深度優化探索優化ORM
- SQL優化:limit分頁優化SQL優化MIT
- (mysql優化-3) 系統優化MySql優化
- MySQL 效能優化之索引優化MySql優化索引
- MySQL優化-安裝配置優化MySql優化
- Web效能優化:圖片優化Web優化
- MySQL 效能優化之SQL優化MySql優化
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle效能優化-SQL優化(案例四)Oracle優化SQL
- Android 效能優化 ---- 啟動優化Android優化
- 效能優化(二) UI 繪製優化優化UI
- hive優化-資料傾斜優化Hive優化
- 效能優化|Tomcat 服務優化優化Tomcat
- Apache網頁優化與安全優化Apache網頁優化
- Android優化之佈局優化Android優化
- web前端優化之圖片優化Web前端優化
- 效能優化04-圖片優化優化
- TableView 優化之資料模型優化View優化模型
- Web效能優化之圖片優化Web優化
- 最優化之無約束優化優化
- CUDA程式優化心得之序列優化優化
- SQL優化思路&結果集重用優化、分割槽索引優化測試SQL優化索引
- Android效能優化之佈局優化Android優化
- Android 優化之路(一)佈局優化Android優化