MaxCompute(ODPS) mapreduce性能优化
Map设置set odps.sql.mapper.cpu=100作用:设定处理map task每个instance的cpu数目,默认为100。[50,,800]之间调整
set odps.sql.mapper.memory=1024作用:设定map task每个instance的memory大小,单位M,默认1024M。[256,12288]之间调整
set odps.sql.mapper.merge.limit.size=64作用:设定控制文件被合并的最大阈值,单位M,默认64M。用户可以通过控制这个变量,从而达到对map端输入的控制。[0,Integer.MAX_VALUE]之间调整
set odps.sql.mapper.split.size=256作用:设定一个map的最大数据输入量,单位M,默认256M。用户可以通过控制这个变量,从而达到对map端输入的控制。[1,Integer.MAX_VALUE]之间调整
Join设置set odps.sql.joiner.instances=-1作用: 设定Join task的instance数量,默认为-1。[0,2000]之间调整
set odps.sql.joiner.cpu=100作用: 设定Join task每个instance的cpu数目,默认为100。[50,800]之间调整
set odps.sql.joiner.memory=1024作用:设定Join task每个instance的memory大小,单位为M,默认为1024M。[256,12288]之间调整
Reduce设置set odps.sql.reducer.instances=-1作用: 设定reduce task的instance数量,默认为-1。[0,2000]之间调整
set odps.sql.reducer.cpu=100作用: 设定处理reduce task每个instance的cpu数目,默认为100。[50,800]之间调整
set odps.sql.reducer.memory=1024作用: 设定reduce task每个instance的memory大小,单位M,默认1024M。[256,12288]之间调整
Udf设置set odps.sql.udf.jvm.memory=1024作用: 设定UDF jvm heap使用的最大内存,单位M,默认1024M。[256,12288]之间调整
set odps.sql.udf.timeout=600作用:设置UDF超时时间,默认为600秒,单位秒。[0,3600]之间调整
set odps.sql.udf.python.memory=256作用:设定UDF python 使用的最大内存,单位M,默认256M。[64,3072]之间调整
set odps.pypy.enabled=true/false作用:python性能优化,设置true后,odps sql都会使用odps-pypy执行python udf/udtf。false 为回到老引擎
set odps.sql.udf.optimize.reuse=true/false作用:开启后,相同的UDF函数表达式,只计算一次,可以提高性能,默认为true。
set odps.sql.udf.strict.mode=false/true作用:true为金融模式和false为淘宝模式,控制有些函数在遇到脏数据时是返回NULL还是抛异常,true是抛出异常,false是返回null。
正则优化odps.sql.udf.regexp.optimize=true/false作用:基于google re2的正则表达式引擎,对正则表达式相关函数进行了优化,true为开启
Mapjoin设置set odps.sql.mapjoin.memory.max=512作用:设置mapjoin时小表的最大内存,默认512,单位M,[128,2048]之间调整
动态分区设置set odps.sql.reshuffle.dynamicpt=true/false作用:(1)false:不会产生倾斜(2)true:合并小文件。默认为true
数据倾斜设置set odps.sql.groupby.skewindata=true/false作用:开启group by优化
set odps.sql.skewjoin=true/false作用:开启join优化,必须设置odps.sql.skewinfo 才有效
set odps.sql.skewinfo作用:设置join优化具体信息,格式 set odps.sql.skewinfo=skewed_src:(skewed_key)[('skewed_value')]例子:针对单个字段单个倾斜数值set odps.sql.skewinfo=src_skewjoin1:(key)[('0')]
explain select a.key c1, a.value c2, b.key c3, b.value c4 from src a join src_skewjoin1 b on a.key = b.key;针对单个字段多个倾斜数值set odps.sql.skewinfo=src_skewjoin1:(key)[('0')('1')]
explain select a.key c1, a.value c2, b.key c3, b.value c4 from src a join src_skewjoin1 b on a.key = b.key;
Map设置set odps.sql.mapper.cpu=100作用:设定处理map task每个instance的cpu数目,默认为100。[50,,800]之间调整
set odps.sql.mapper.memory=1024作用:设定map task每个instance的memory大小,单位M,默认1024M。[256,12288]之间调整
set odps.sql.mapper.merge.limit.size=64作用:设定控制文件被合并的最大阈值,单位M,默认64M。用户可以通过控制这个变量,从而达到对map端输入的控制。[0,Integer.MAX_VALUE]之间调整
set odps.sql.mapper.split.size=256作用:设定一个map的最大数据输入量,单位M,默认256M。用户可以通过控制这个变量,从而达到对map端输入的控制。[1,Integer.MAX_VALUE]之间调整
Join设置set odps.sql.joiner.instances=-1作用: 设定Join task的instance数量,默认为-1。[0,2000]之间调整
set odps.sql.joiner.cpu=100作用: 设定Join task每个instance的cpu数目,默认为100。[50,800]之间调整
set odps.sql.joiner.memory=1024作用:设定Join task每个instance的memory大小,单位为M,默认为1024M。[256,12288]之间调整
Reduce设置set odps.sql.reducer.instances=-1作用: 设定reduce task的instance数量,默认为-1。[0,2000]之间调整
set odps.sql.reducer.cpu=100作用: 设定处理reduce task每个instance的cpu数目,默认为100。[50,800]之间调整
set odps.sql.reducer.memory=1024作用: 设定reduce task每个instance的memory大小,单位M,默认1024M。[256,12288]之间调整
Udf设置set odps.sql.udf.jvm.memory=1024作用: 设定UDF jvm heap使用的最大内存,单位M,默认1024M。[256,12288]之间调整
set odps.sql.udf.timeout=600作用:设置UDF超时时间,默认为600秒,单位秒。[0,3600]之间调整
set odps.sql.udf.python.memory=256作用:设定UDF python 使用的最大内存,单位M,默认256M。[64,3072]之间调整
set odps.pypy.enabled=true/false作用:python性能优化,设置true后,odps sql都会使用odps-pypy执行python udf/udtf。false 为回到老引擎
set odps.sql.udf.optimize.reuse=true/false作用:开启后,相同的UDF函数表达式,只计算一次,可以提高性能,默认为true。
set odps.sql.udf.strict.mode=false/true作用:true为金融模式和false为淘宝模式,控制有些函数在遇到脏数据时是返回NULL还是抛异常,true是抛出异常,false是返回null。
正则优化odps.sql.udf.regexp.optimize=true/false作用:基于google re2的正则表达式引擎,对正则表达式相关函数进行了优化,true为开启
Mapjoin设置set odps.sql.mapjoin.memory.max=512作用:设置mapjoin时小表的最大内存,默认512,单位M,[128,2048]之间调整
动态分区设置set odps.sql.reshuffle.dynamicpt=true/false作用:(1)false:不会产生倾斜(2)true:合并小文件。默认为true
数据倾斜设置set odps.sql.groupby.skewindata=true/false作用:开启group by优化
set odps.sql.skewjoin=true/false作用:开启join优化,必须设置odps.sql.skewinfo 才有效
set odps.sql.skewinfo作用:设置join优化具体信息,格式 set odps.sql.skewinfo=skewed_src:(skewed_key)[('skewed_value')]例子:针对单个字段单个倾斜数值set odps.sql.skewinfo=src_skewjoin1:(key)[('0')]
explain select a.key c1, a.value c2, b.key c3, b.value c4 from src a join src_skewjoin1 b on a.key = b.key;针对单个字段多个倾斜数值set odps.sql.skewinfo=src_skewjoin1:(key)[('0')('1')]
explain select a.key c1, a.value c2, b.key c3, b.value c4 from src a join src_skewjoin1 b on a.key = b.key;
赞0
踩0