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打包成一个。