hive set 常用參數匯總


1、 set hive.auto.convert.join = true;

mapJoin的主要意思就是,當鏈接的兩個表是一個比較小的表和一個特別大的表的時候,我們把比較小的table直接放到內存中去,然后再對比較大的表格進行map操作。join就發生在map操作的時候,每當掃描一個大的table中的數據,就要去去查看小表的數據,哪條與之相符,繼而進行連接。這里的join並不會涉及reduce操作。map端join的優勢就是在於沒有shuffle。在本質上mapjoin根本就沒有運行MR進程,僅僅是在內存就進行了兩個表的聯合。

2、 set mapred.job.priority = VERY_HIGH;  --設置任務優先級

3、set mapred.output.compress = true;

     set hive.exec.compress.output = true;

    壓縮最終結果

4、SET hive.default.fileformat = Orc;  -- 設置默認文件格式

ORC File,它的全名是Optimized Row Columnar (ORC) file,其實就是對RCFile做了一些優化。據官方文檔介紹,這種文件格式可以提供一種高效的方法來存儲Hive數據。

它的設計目標是來克服Hive其他格式的缺陷。運用ORC File可以提高Hive的讀、寫以及處理數據的性能。

5、set hive.exec.dynamic.partition=true; 是開啟動態分區

     set hive.exec.dynamic.partition.mode=nonstrict; 這個屬性默認值是strict,就是要求分區字段必須有一個是靜態的分區值,隨后會講到,當前設置為nonstrict,那么可以全部動態分區.

7、動態分區參數設置

set hive.exec.max.dynamic.partitions = 130000;
set hive.exec.max.dynamic.partitions.pernode = 130000;

set hive.exec.max.created.files = 200000;

當對hive分區未做設置時,報錯如下:

Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: Fatal error occurred when node tried to create too many dynamic partitions. The maximum number of dynamic partitions is controlled by hive.exec.max.dynamic.partitions and hive.exec.max.dynamic.partitions.pernode. Maximum was set to: 5000
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.getDynOutPaths(FileSinkOperator.java:877)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:657)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
at org.apache.hadoop.hive.ql.exec.mr.ExecReducer.reduce(ExecReducer.java:244)
... 7 more

超過了最大的分區數設置

解決辦法:

set hive.exec.dynamic.partition=true;

set hive.exec.dynamic.partition.mode=nonstrict;

set hive.exec.max.dynamic.partitions.pernode=600000;

set hive.exec.max.dynamic.partitions=6000000;

set hive.exec.max.created.files=6000000;

  

8、set mapreduce.map.cpu.vcores = 4;  -- 每個Map Task需要的虛擬CPU個數

set mapreduce.reduce.cpu.vcores = 8;  -- 每個Reduce Task需要的虛擬CPU個數

9、set mapreduce.map.memory.mb = 8192; -- 每個Map Task需要的內存量

set mapreduce.reduce.memory.mb = 10500; -- 每個Reduce Task需要的內存量

 

10、set hive.exec.parallel = true;

set hive.exec.parallel.thread.number = 16;

ive.exec.parallel可以控制一個sql中多個可並行執行的job的運行方式.
當hive.exec.parallel為true的時候,同一個sql中可以並行執行的job會並發的執行.

而參數hive.exec.parallel.thread.number就是控制對於同一個sql來說同時可以運行的job的最大值,該參數默認為8.此時最大可以同時運行8個job.

比如union操作

11、set yarn.app.mapreduce.am.resource.mb = 10000;  -- MR ApplicationMaster占用的內存量

set yarn.app.mapreduce.am.command - opts = - Xmx10000m;  -- 

 

12、

set mapreduce.map.java.opts = - Xmx9192m;  --  設置Map任務JVM的堆空間大小,默認-Xmx1024m
set mapreduce.reduce.java.opts = - Xmx10000m;   -- 設置reduce任務JVM的堆空間大小,默認-Xmx1024m

 

13、

set spark.sql.hive.mergeFiles=true;   合並小文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM