MaxCoumpte 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;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。