SET mapred.job.name='customer_rfm_analysis_L1';node
這樣在job任務列表裏能夠第一眼找到本身的任務。sql
由於會把數據弄在一個reduce中,形成數據傾斜。distinct數據數量大於1000條時。apache
不然會引發磁盤和內存的大量消耗併發
能把小表寫入內存中,便於屢次讀寫。app
或者每一個union部分數據量大,應該拆成多個insert into 語句oop
--每一個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
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]
能夠把多個coordinator打包成一個。