Hive設置配置參數的方法,列舉8個常用配置


Hive設置配置參數的方法

  • Hive提供三種可以改變環境變量的方法,分別是:
    (1)、修改${HIVE_HOME}/conf/hive-site.xml配置文件;
    (2)、命令行參數;
    (3)、在已經進入cli時進行參數聲明。

方法一:hive-site.xml配置參數

  • 在Hive中,所有的默認配置都在 "{HIVE_HOME}/conf/hive-default.xml "文件中,如果需要對默認的配置進行修改,可以創建一個 "hive-site.xml" 文件,放在 " {HIVE_HOME}/conf"目錄下。里面可以對一些配置進行個性化設定。在hive-site.xml的格式如下:
<configuration> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> </property> </configuration> 
  • 所有的配置都是放在<configuration></configuration>標簽之間,一個configuration標簽里面可以存在多個<property></property>標簽。<name>標簽里面就是我們想要設定屬性的名稱;<value>標簽里面是我們想要設定的值;<description;<標簽是描述在這個屬性的,可以不寫。絕大多少配置都是在xml文件里面配置的,因為在這里做的配置都全局用戶都生效,而且是永久的。用戶自定義配置會覆蓋默認配置。另外,Hive也會讀入Hadoop的配置,因為Hive是作為Hadoop的客戶端啟動的,Hive的配置會覆蓋Hadoop的配置。

方法二:命令行參數

  • 在啟動Hive cli的時候進行配置,可以在命令行添加-hiveconf param=value來設定參數,例如:
hive --hiveconf mapreduce.job.queuename=queue1 
  • 這樣在Hive中所有MapReduce作業都提交到隊列queue1中。這一設定對本次啟動的會話有效,下次啟動需要重新配置。

方法三:進入cli時候聲明

  • 在已經進入cli時進行參數聲明,可以在HQL中使用SET關鍵字設定參數,例如:
set mapreduce.job.queuename=queue1; 

上述三種設定方式的優先級依次遞增。即參數聲明覆蓋命令行參數,命令行參數覆蓋配置文件設定。

列舉8個常用的配置參數

  • 0-hive.fetch.task.conversion=more;將hive拉取的模式設置為more模式
  • 1-hive.exec.mode.local.auto 決定 Hive 是否應該自動地根據輸入文件大小,在本地運行(在GateWay運行) ;
  • 2-hive.auto.convert.join :是否根據輸入小表的大小,自動將 Reduce 端的 Common Join 轉化為 Map Join,從而加快大表關聯小表的 Join 速度。 默認:false。
  • 3-mapred.reduce.tasks :所提交 Job 的 reduer 的個數,使用 Hadoop Client 的配置。 默認是-1,表示Job執行的個數交由Hive來分配;
    mapred.map.tasks:設置提交Job的map端個數;
  • 4-hive.map.aggr=true 開啟map端聚合;
    hive.groupby.skewindata=true :決定 group by 操作是否支持傾斜的數據。
    原理是,在Group by中,對一些比較小的分區進行合並,默認是false;
  • 5-hive.merge.mapredfiles :是否開啟合並 Map/Reduce 小文件,對於 Hadoop 0.20 以前的版本,起一首新的 Map/Reduce Job,對於 0.20 以后的版本,則是起使用 CombineInputFormat 的 MapOnly Job。 默認是:false;
  • 6-hive.mapred.mode :Map/Redure 模式,如果設置為 strict,將不允許笛卡爾積。 默認是:'nonstrict';
  • 7-hive.exec.parallel :是否開啟 map/reduce job的並發提交。
    默認Map/Reduce job是順序執行的,默認並發數量是8,可以配置。默認是:false;
  • 8-hive.exec.dynamic.partition =true:是否打開動態分區。 需要打開,默認:false;
    set hive.exec.dynamic.partition.mode=nonstirct


免責聲明!

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



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