企業常用Hive SQL配置
阿新 • • 發佈:2021-01-18
企業常用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檔案中,一般僅涉及作業調優,對叢集的公共調優部分會持久化到配置檔案中。
後話
如果有幫助的,記得點贊、關注。在公眾號《數舟》中,可以免費獲取專欄《資料倉庫》配套的視訊課程、大資料叢集自動安裝指令碼,並獲取進群交流的途徑。
我所有的大資料技術內容也會優先發布到公眾號中。如果對某些大資料技術有興趣,但沒有充足的時間,在群裡提出,我為大家安排分享。
公眾號自取: