MaxCompute支持在Session级设置MaxCompute系统变量,本文为您介绍如何设置及查看MaxCompute系统变量,影响MaxCompute的行为。

set操作相关命令如下。
类型 功能 角色 操作入口
set 对当前Session设置MaxCompute系统变量。 具备项目空间操作权限的用户。 本文中的命令您可以在如下工具平台执行:
show flags 显示set命令设置的属性。

set

对当前Session设置MaxCompute系统变量。MaxCompute也支持设置Project级的属性,详情请参见设置项目空间属性

  • 命令格式
    set <KEY>=<VALUE>
  • 参数说明
    • KEY:属性名称。
    • VALUE:属性值。
      Session级的常用属性如下。
      属性名称 属性描述 取值范围
      console.sql.result.instancetunnel InstanceTunnel开关。详情请参见使用说明
      • True:打开
      • False:关闭
      odps.stage.mapper.mem 设置每个Map Worker的内存大小。 单位MB,默认值为1024 MB。
      odps.stage.reducer.mem 设置每个Reduce Worker的内存大小。 单位MB,默认值为1024 MB。
      odps.stage.joiner.mem 设置每个Join Worker的内存大小。 单位MB,默认值为1024 MB。
      odps.stage.mem 设置MaxCompute指定任务下所有Worker的内存大小。优先级低于odps.stage.mapper.memodps.stage.reducer.memodps.stage.joiner.mem属性。 单位MB,无默认值。
      odps.stage.mapper.split.size 修改每个Map Worker的输入数据量,即输入文件的分片大小,从而间接控制每个Map阶段下Worker的数量。 单位MB,默认值为256 MB。
      odps.stage.reducer.num 修改每个Reduce阶段的Worker数量。 无默认值。
      odps.stage.joiner.num 修改每个Join阶段的Worker数量。 无默认值。
      odps.stage.num 修改MaxCompute指定任务下所有Worker的并发数,优先级低于odps.stage.mapper.split.sizeodps.stage.reducer.memodps.stage.joiner.num属性。 无默认值。
      odps.sql.reshuffle.dynamicpt 动态分区开关,以避免拆分动态分区时产生过多小文件。
      • True:打开
      • False:关闭
      说明 如果生成的动态分区个数很少,建议将值设为False,以避免数据倾斜。
      odps.sql.type.system.odps2 2.0新数据类型开关。2.0数据类型详情请参见2.0数据类型版本
      • True:打开
      • False:关闭
      odps.sql.hive.compatible Hive兼容模式开关。打开Hive兼容模式后,MaxCompute才支持Hive指定的各种语法,例如inputRecordReaderoutputRecordReaderSerde。Hive兼容数据类型详情请参见Hive兼容数据类型版本
      • True:打开
      • False:关闭
      odps.sql.executionengine.coldata.deep.buffer.size.max 设置MaxCompute在写表过程中,为复杂数据类型的列预先申请的缓存大小,以便提高写入性能。
      如果输出的表中的复杂数据类型过多或输出表中含有的某个单独的复杂类型变量大小过大,可以设置该参数。
      • 如果输出的表有3个列的Schema是复杂数据类型,例如列类型为(STRING、MAP、STRUCT、ARRAY或BINARY),则默认情况下MaxCompute将会为写表操作预留64 MB×3大小的内存。每一列预先申请的缓存将会用来存放这一列batch row count行的数据。
      • 如果预估表的复杂类型变量占用的空间比较小,建议调小此值。例如,如果每个复杂类型变量大小不会超过1024 Byte,同时batch row count值使用的是默认值(1024),则可以将属性值设置为1024×1024,示例如下。
        set odps.sql.executionengine.coldata.deep.buffer.size.max=1048576;
      • 如果您预先知道每个复杂类型的值都在7 MB~8 MB间,同时指定了batch row count为32,则该值可以被调整为8 MB×32。
      • 如果输出的表有复杂类型,或MAPJOIN小表有复杂类型,调整该值会影响到作业执行过程中使用的内存。根据前面的计算方法,值设的过大有可能导致OOM(Out Of Memory)内存溢出。
      单位Byte,默认值为67108864 Byte。
      odps.task.quota.preference.tag 指定作业的Quota组(即MaxCompute管家中的配额组)。使用包年包月资源的项目空间可以通过该属性指定作业使用某个具体的二级Quota组。如果提交作业时设置的Quota Tag和某个Quota组属性中的Quota Tag相等,作业就会被优先调度到这个Quota组中。否则,会被调度到所属项目空间指定的Quota组中。
      执行如下语句进行设置。
      set odps.task.quota.preference.tag = tag_name;
      说明 该属性当前仅支持SQL作业。
      tag_name为MaxCompute管家中配额组的标签。配额组只能取作业所属项目空间Owner所在区域的配额组。tag_name只允许使用字母、数字和下划线(_)。
      odps.sql.udf.getjsonobj.new 设置GET_JSON_OBJECT函数的返回行为是否开启保留原始字符串的方式。

      自2021年1月21日及之后新创建的MaxCompute项目中,GET_JSON_OBJECT函数的返回行为默认为保留原始字符串。2021年1月21日之前创建的MaxCompute项目中,GET_JSON_OBJECT函数的返回行为默认为JSON保留字符转义,以免行为变更对存量作业造成影响。

      更多GET_JSON_OBJECT函数信息,请参见GET_JSON_OBJECT

      • True:打开
      • False:关闭
      LabelSecurity 设置是否开启LabelSecurity安全机制。更多LabelSecurity安全机制信息,请参见列级别访问控制
      • True:打开
      • False:关闭
      odps.sql.session.resources 指定UDT引用的资源,可以指定多个,用英文逗号(,)分隔。更多引用资源信息,请参见UDT概述 上传的资源
      odps.sql.udt.display.tostring 设置是否开启将所有以UDT为最终输出的列Wrap上java.util.Objects.toString(...)的机制。
      • True:打开
      • False:关闭
      odps.sql.session.java.imports 指定UDT引用的Java Package,可以指定多个,用英文逗号(,)分隔。更多引用Java Package信息,请参见UDT概述 上传的Java Package
      CheckPermissionUsingACL 设置是否开启ACL授权机制。更多ACL授权信息,请参见授权
      • True:打开
      • False:关闭
      CheckPermissionUsingPolicy 设置是否开启Policy授权机制。更多Policy授权信息,请参见Policy和Download权限控制
      • True:打开
      • False:关闭
      ObjectCreatorHasAccessPermission 设置对象创建者是否默认拥有访问权限。
      • True:允许对象创建者默认拥有访问权限
      • False:禁止对象创建者默认拥有访问权限
      ObjectCreatorHasGrantPermission 设置对象创建者是否默认拥有授权权限。
      • True:允许对象创建者默认拥有授权权限
      • False:禁止对象创建者默认拥有授权权限
      ProjectProtection 设置是否开启数据保护机制。更多数据保护机制信息,请参见项目空间的数据保护
      • True:打开
      • False:关闭
      odps.output.field.formatter 设置SQL查询结果的动态脱敏规则。更多动态脱敏信息,请参见MaxCompute数据动态脱敏 自定义的动态脱敏规则
      odps.isolation.session.enable 设置是否在单Session级别开启动态脱敏。更多动态脱敏信息,请参见MaxCompute数据动态脱敏
      • True:打开
      • False:关闭
      odps.sql.skewjoin 设置是否开启SKEWJOIN功能,解决长尾问题。
      • True:打开
      • False:关闭
      odps.sql.skewinfo 设置SKEWJOIN的目标Key及对应的值。更多信息,请参见JOIN长尾优化
      odps.sql.reducer.instances 设置哈希桶的数量。更多哈希桶信息,请参见表操作 0~4000
      odps.sql.udf.ppr.deterministic 设置是否在自定义函数中开启分区裁剪机制。更多分区裁剪信息请参见WHERE子句(where_condition)
      • True:打开
      • False:关闭
      odps.sql.udf.ppr.to.subquery 设置是否开启忽略分区裁剪回填报错问题机制。更多分区裁剪信息请参见WHERE子句(where_condition)
      • True:打开
      • False:关闭
      odps.optimizer.enable.range.partial.repartitioning 设置Range聚簇表是否开启Shuffle Remove机制。
      • True:打开
      • False:关闭
      odps.optimizer.skew.join.topk.num 设置优化器运行Aggregate时获取的热值数量。详情请参见SKEWJOIN HINT
      odps.optimizer.stat.collect.auto 设置是否开启Freeride功能。开启后自动收集表的Column Stats。详情请参见优化器信息收集
      • True:打开
      • False:关闭
      odps.optimizer.stat.collect.plan 设置收集计划,收集指定列的指定Column Stats指标。详情请参见优化器信息收集
      odps.sql.executionengine.batch.rowcount 设置SQL引擎一次同时处理的数据行数。默认值是1024。一般不需要手动调整,遇到单行大字段导致OOM或UDF性能较差导致的超时场景需要手动调小。建议不要设置太小否则会影响性能。 1~1024
      odps.sql.external.net.vpc 设置是否开启外部表VPC支持。详情请参见HBase外部表RDS外部表Hologres外部表
      • True:打开
      • False:关闭
      odps.sql.groupby.position.alias 设置是否开启将groupby中的整型常量做为SELECT的列序号处理。
      • True:打开
      • False:关闭
      odps.sql.groupby.skewindata 设置是否开启groupby防倾斜机制。
      • True:打开
      • False:关闭
      odps.sql.jobconf.odps2 设置是否开启jobconf2功能来生成作业执行计划。
      • True:打开
      • False:关闭
      odps.sql.mapjoin.memory.max 设置MAPJOIN场景小表读入内存后的大小,单位MB。 0 MB~10000 MB
      odps.sql.metering.value.max 设置单SQL消费限制值。详情请参见消费监控告警
      odps.sql.python.version 设置运行SQL句的Python版本。
      • cp27
      • cp37
      odps.sql.select.output.format 设置是否在MaxCompute客户端的返回结果中显示表头信息。详情请参见客户端
      • {needHeader:false,fieldDelim:""}:不显示表头信息。
      • {needHeader:true,fieldDelim:""}:显示表头信息
      odps.sql.timezone 设置MaxCompute项目的时区。更多时区信息,请参见时区配置操作
      odps.sql.unstructured.data.oss.use.https 设置访问外部表时,是否需要开启底层通过HTTPS方式获取数据的机制。更多信息,请参见内置Extractor访问OSS
      • True:打开
      • False:关闭
      odps.sql.unstructured.oss.commit.mode 设置是否开启通过OSS的分片上传功能向OSS外部表写入数据。详情请参见输出到OSS的非结构化数据
      • True:打开
      • False:关闭
  • 使用示例
    --调整每个Mapper读取数据的大小为256 MB。
    set odps.stage.mapper.split.size=256;

show flags

显示set命令设置的属性。命令格式如下:
show flags;