1. 程式人生 > 其它 >企業常用Hive SQL配置

企業常用Hive SQL配置

技術標籤:大資料大資料hadoophive

企業常用Hive SQL配置

在企業中使用Hive SQL需要一定的規範。一般在SQL編寫之前,需要進行規範的註釋新增,並設定特定的配置。

在SQL檔案開始,常見的註釋有:

[email protected]:所屬資料庫.結果表
[email protected]:描述
[email protected]:表型別,如每日彙總表
[email protected]:結果表
[email protected]:資料來源表1	別名1
[email protected]:資料來源表2	別名2
[email protected]
:工號 作者 [email protected]:建立日期 [email protected]:修改人 [email protected]:修改日期 [email protected]:修改描述 [email protected] 版權

良好的註釋,便於程式碼的閱讀和版本的控制。

在註釋之後,會新增公用的調優引數:

-- 設定作業名,方便出錯後作業查詢
set mapred.job.name = TASK_NAME (${hivevar:statis_date});
-- 每個Map最大輸入大小,可以適當調整。
set mapred.max.split.size = 300000000;
-- 每個Map最小輸入大小,可以適當調整。
set mapred.min.split.size = 100000000;
-- 執行Map前進行小檔案合併
set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
-- hive自動根據sql,選擇使用common join或者map join(關閉)
set hive.auto.convert.join = false;
-- 在Map-only的任務結束時合併小檔案
set hive.merge.mapfiles = true;
-- 在Map-Reduce的任務結束時不合並小檔案
set hive.merge.mapredfiles = false;
-- 合併檔案的大小,可以適當調整。
set hive.merge.size.per.task = 300000000;

這些引數中,首先進行了作業名的設定,然後對Map數量進行了設定,便於併發的提高;Map階段前進行小檔案合併,一定程度上緩解了小檔案帶來的影響。

接著可以設定Join的自動判斷,如果存在小表,則直接使用map join將表載入到記憶體中,而避免shuffle,這裡設定了關閉,可以根據需求來定。

最後設定任務結束時,小檔案的合併。

在此之後,便可以進行SQL的編寫。良好的開發規範,可以避免很多問題。當然在SQL檔案中,一般僅涉及作業調優,對叢集的公共調優部分會持久化到配置檔案中。

後話

如果有幫助的,記得點贊、關注。在公眾號《數舟》中,可以免費獲取專欄《資料倉庫》配套的視訊課程、大資料叢集自動安裝指令碼,並獲取進群交流的途徑。

我所有的大資料技術內容也會優先發布到公眾號中。如果對某些大資料技術有興趣,但沒有充足的時間,在群裡提出,我為大家安排分享。

公眾號自取:

公眾號