您好,登錄后才能下訂單哦!
小編給大家分享一下Hive運維中hive-site文件的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1. Hive set命令。
2. 命令行選擇 -hiveconf
3. hive-site.xml
4. hive-default.xml
5. hadoop-site.xml(或者是core-site.xml hdfs-site.xml mapred-site.xml)
6. hadoop-default.xml(或者是core-default.xml hdfs-default.xml mapred-default.xml)。
7. hive的日志信息存放在 /tmp/$USER/hive.log,出錯時hadoop的mapred task logs也可以查看,本環境在/tmp/nslab下查看。
命令:hive -hiveconf hive.root.logger=DEBUG,console 將調試信息打印到控制臺。
使用set的使用
1. 使用set查看設置的值:
set hive.enforce.bucketing
2. 只輸入一個set,會列出所有的設置。
3. 設置新的屬性,格式類似下面:
set hive.enforce.bucketing=true;
hive.exec.dynamic.partition
是否打開動態分區。
默認:false
hive.exec.dynamic.partition.mode
打開動態分區后,動態分區的模式,有 strict 和 nonstrict 兩個值可選,strict 要求至少包含一個靜態分區列,nonstrict 則無此要求。
默認:strict
hive.exec.max.dynamic.partitions
所允許的最大的動態分區的個數。
默認:1000
hive.exec.max.dynamic.partitions.pernode
單個 reduce 結點所允許的最大的動態分區的個數。
默認:100
hive.exec.default.partition.name
默認的動態分區的名稱,當動態分區列為''或者null時,使用此名稱。''
set hive.cli.print.header=true; // 打印列名
set hive.cli.print.row.to.vertical=true; // 開啟行轉列功能, 前提必須開啟打印列名功能
set hive.cli.print.row.to.vertical.num=1; // 設置每行顯示的列數
set hive.hwi.war.file;
hive.cli.encoding
Hive 默認的命令行字符編碼。
默認: 'UTF8'
set hive.fetch.task.conversion=more;
對于簡單的不需要聚合的類似SELECT <col> from <table> LIMIT n語句,不需要起MapReduce job,直接通過Fetch task獲取數據(數據量過大, 也能 無 返回結果)
類似linux的vi,直接對文本進行操作。
也有點類似shark的列存儲的操作: 放在同一個array里面,所以查詢數據很快
hive.fetch.task.conversion
Hive 默認的mapreduce操作
默認: minimal
舊版本HIVE需要自行在查詢/子查詢的SELECT關鍵字后面添加/*+ MAPJOIN(tablelist) */提示優化器轉化為MapJoin。高版本只需設置:
set hive.auto.convert.join=true;
HIVE自行選擇小表作為LEFT的左表。
hive.mapred.mode=true,嚴格模式不允許執行以下查詢:
分區表上沒有指定了分區
沒有limit限制的order by語句
笛卡爾積:JOIN時沒有ON語句
設置該參數是控制在同一個sql中的不同的job是否可以同時運行,默認是false
hive.exec.parallel=true ,默認為false
hive.exec.parallel.thread.number=8
hive.groupby.skewindata=true:數據傾斜時負載均衡,當選項設定為true,生成的查詢計劃會有兩個MRJob。第一個MRJob 中,
Map的輸出結果集合會隨機分布到Reduce中,每個Reduce做部分聚合操作,并輸出結果,這樣處理的結果是相同的GroupBy Key
有可能被分發到不同的Reduce中,從而達到負載均衡的目的;第二個MRJob再根據預處理的數據結果按照GroupBy Key分布到
Reduce中(這個過程可以保證相同的GroupBy Key被分布到同一個Reduce中),最后完成最終的聚合操作。
set hive.error.on.empty.partition = true;
set hive.exec.dynamic.partition.mode=nonstrict;
參考地址: http://my.oschina.net/repine/blog/541380
工作需要合并reduce產生文件:
set hive.merge.smallfiles.avgsize=67108864;
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
參考地址: http://www.linuxidc.com/Linux/2015-06/118391.htm
1.先在hive-site.xml中設置小文件的標準.
<property>
<name>hive.merge.smallfiles.avgsize</name>
<value>536870912</value>
<description>When the average output file size of a job is less than this number, Hive will start an additional map-reduce job to merge the output files into bigger files. This is only done for map-only jobs if hive.merge.mapfiles is true, and for map-reduce jobs if hive.merge.mapredfiles is true.</description>
</property>
2.為只有map的mapreduce的輸出并合并小文件.
<property>
<name>hive.merge.mapfiles</name>
<value>true</value>
<description>Merge small files at the end of a map-only job</description>
</property>
3.為含有reduce的mapreduce的輸出并合并小文件.
<property>
<name>hive.merge.mapredfiles</name>
<value>true</value>
<description>Merge small files at the end of a map-reduce job</description>
</property>
以上是“Hive運維中hive-site文件的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。