Hive簡單優化;workflow調試

1. 定義job名字

SET mapred.job.name='customer_rfm_analysis_L1';node

這樣在job任務列表裏能夠第一眼找到本身的任務。sql

 

2. 少用distinct, 儘可能用group by

由於會把數據弄在一個reduce中,形成數據傾斜。distinct數據數量大於1000條時。apache

 

3. join時小表最好放左邊

不然會引發磁盤和內存的大量消耗併發

4. 小表和超大的表join時,能夠使用map join

能把小表寫入內存中,便於屢次讀寫。app

5. 若是union all的部分個數大於2

或者每一個union部分數據量大,應該拆成多個insert into 語句oop

6. SQL裏的通用設置

--每一個sql的代碼都同樣
SET mapred.max.split.size=256000000;
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET mapred.output.compression.type=BLOCK;
SET hive.exec.dynamic.partition=true;
SET hive.exec.dynamic.partition.mode=nonstrict;
set mapreduce.map.output.compress=true;
set mapred.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;
set mapreduce.reduce.shuffle.input.buffer.percent =0.6;
set mapreduce.reduce.shuffle.parallelcopies = 5;
set hive.exec.max.created.files=655350;
set hive.exec.max.dynamic.partitions=10000000;
set hive.exec.max.dynamic.partitions.pernode=10000000;spa

7. workflow

1) coordinator 動態日期獲取code

       ${coord:formatTime(coord:dateOffset(coord:nominalTime(),-2,'DAY'), 'yyyy-MM-dd')}orm

表示取當天的兩天以前的日期(格式是 yyyy-MM-dd)內存

       ${coord:formatTime(coord:nominalTime(), 'yyyy-MM-dd')}

表示取當天的日期(格式是 yyyy-MM-dd)

注意: 當修改workflow後,須要從新提交coordinator纔會生效。

2) coordinator 時間設置

要選用utc時區;

設置時間爲需求的執行時間 - 8 hours;

3) coordinator 能夠自動識別出 workflow中調用的參數,賦值給它便可。

    SQL中的參數要設置成 ${參數名這種},若是是字符串,'${字符串名}'

    workflow中設置參數爲 ${參數名},不須要引號。

4)workflow 參數能夠上傳一個文件。 文件該是什麼格式??

5)  半路結束,狀態爲failed。

Halting due to Out Of Memory Error...

GC overhead limit exceeded

嘗試方法:調大oozie的heapsize,解決!

6)併發子workflow相互不能執行成功,狀態爲Succeeded。但實際上任務並未完成。是由於有相鄰子workflow出現錯誤

GC overhead limit exceeded
Closing: 0: jdbc:hive2://spark-02:10000/default
Intercepting System.exit(2)
Failing Oozie Launcher, Main class [org.apache.oozie.action.hadoop.Hive2Main], exit code [2]

8 oozie 能夠調用 Hive QL,Spark, Java,Shell

9 Bundle 跟workflow, coordinator 在同一個設置區。

能夠把多個coordinator打包成一個。

相關文章
相關標籤/搜索