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

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

set

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

  • 命令格式
    set <KEY>=<VALUE>
  • 参数说明
    • KEY:属性名称。
    • VALUE:属性值。
      Session级的常用属性如下。
      分类 影响范围 属性名称 属性描述 取值范围
      生态 Session console.sql.result.instancetunnel InstanceTunnel开关。关于Tunnel命令的更多信息,请参见使用说明
      • True:打开。
      • False:关闭。
      调度 Session odps.stage.mapper.mem 设置每个Map Worker的内存大小。 取值范围:256 MiB~12288 MiB。默认值为1024 MiB。
      调度 Session odps.stage.reducer.mem 设置每个Reduce Worker的内存大小。 取值范围:256 MiB~12288 MiB。默认值为1024 MiB。
      调度 Session odps.stage.joiner.mem 设置每个Join Worker的内存大小。 取值范围:256 MiB~12288 MiB。默认值为1024 MiB。
      调度 Session odps.stage.mem 设置MaxCompute指定任务下所有Worker的内存大小。优先级低于odps.stage.mapper.memodps.stage.reducer.memodps.stage.joiner.mem属性。 取值范围:256 MiB~12288 MiB。无默认值。
      调度 Session odps.stage.mapper.split.size 修改每个Map Worker的输入数据量,即输入文件的分片大小,从而间接控制每个Map阶段下Worker的数量。
      说明 SQL语句中使用Limit,会限制Limit作用的Worker单并发运行。因此在设置该配置项的时候,SQL语句中应避免使用Limit。
      单位MiB,默认值为256 MiB。
      调度 Session odps.stage.reducer.num 修改每个Reduce阶段的Worker数量。
      说明 SQL语句中使用Limit,会限制Limit作用的Worker单并发运行。因此在设置该配置项的时候,SQL语句中应避免使用Limit。
      -
      调度 Session odps.stage.joiner.num 修改每个Join阶段的Worker数量。
      说明 SQL语句中使用Limit,会限制Limit作用的Worker单并发运行。因此在设置该配置项的时候,SQL语句中应避免使用Limit。
      -
      调度 Session odps.stage.num 修改MaxCompute指定任务下所有Worker的并发数,优先级低于odps.stage.mapper.split.sizeodps.stage.reducer.memodps.stage.joiner.num属性。
      说明 SQL语句中使用Limit,会限制Limit作用的Worker单并发运行。因此在设置该配置项的时候,SQL语句中应避免使用Limit。
      -
      调度 Project odps.instance.priority.enable 使用包年包月计算资源项目空间的作业优先级功能开关。关于作业优先级功能的更多信息,请参见作业优先级 取值范围:0~9,默认值为9。数值越小,优先级越高。
      SQL Session odps.sql.reshuffle.dynamicpt 动态分区开关,以避免拆分动态分区时产生过多小文件。
      • True:打开。
      • False:关闭。
      说明 如果生成的动态分区个数很少,建议将值设为False,以避免数据倾斜。
      SQL Session odps.sql.type.system.odps2 2.0新数据类型开关。关于MaxCompute 2.0数据类型的更多信息,请参见2.0数据类型版本
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.hive.compatible Hive兼容模式开关。打开Hive兼容模式后,MaxCompute才支持Hive指定的各种语法,例如inputRecordReaderoutputRecordReaderSerde。关于Hive兼容数据类型的更多信息,请参见Hive兼容数据类型版本
      • True:打开。
      • False:关闭。
      SQL Session 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函数的更多信息,请参见字符串函数
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.udf.jvm.memory 设置UDF JVM Heap使用的最大内存。

      部分UDF在内存计算、排序的数据量比较大时,会报内存溢出错误,这时候可以调大该参数,但该方法只能暂时缓解,您需要从业务上去优化UDF代码。

      取值范围:256 MiB~12288 MiB。默认值为1024 MiB。
      SQL Session odps.sql.udf.timeout 设置UDF超时时间。 取值范围:0s~3600s。默认值为600s。
      SQL Session odps.sql.session.resources 指定UDT引用的资源,可以指定多个,用英文半角逗号(,)分隔。关于引用资源的更多信息,请参见UDT概述 上传的资源。
      SQL Session odps.sql.udt.display.tostring 设置是否开启将所有以UDT为最终输出的列Wrap上java.util.Objects.toString(...)的机制。
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.session.java.imports 指定UDT引用的Java Package,可以指定多个,用英文半角逗号(,)分隔。关于Java Package的更多信息,请参见UDT概述 上传的Java Package。
      SQL Session odps.sql.skewjoin 设置是否开启SKEWJOIN功能,解决长尾问题。
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.skewinfo 设置SKEWJOIN的目标Key及对应的值。具体操作,请参见数据倾斜调优 -
      SQL Session odps.sql.udf.ppr.deterministic 设置是否在自定义函数中开启分区裁剪机制。关于分区裁剪信息的更多信息,请参见WHERE子句(where_condition)
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.udf.ppr.to.subquery 设置是否开启忽略分区裁剪回填报错问题机制。关于分区裁剪信息的更多信息,请参见WHERE子句(where_condition)
      • True:打开。
      • False:关闭。
      SQL Session odps.optimizer.enable.range.partial.repartitioning 设置Range聚簇表是否开启Shuffle Remove机制。
      • True:打开。
      • False:关闭。
      SQL Session odps.optimizer.skew.join.topk.num 设置优化器运行Aggregate时获取的热值数量。具体操作,请参见SKEWJOIN HINT -
      SQL Session odps.optimizer.stat.collect.auto 设置是否开启Freeride功能,开启后自动收集表的Column Stats。关于优化器信息收集的更多信息,请参见优化器信息收集
      • True:打开。
      • False:关闭。
      SQL Session odps.optimizer.stat.collect.plan 设置收集计划,收集指定列的指定Column Stats指标。关于优化器信息收集的更多信息,请参见优化器信息收集 -
      SQL Session odps.sql.external.net.vpc 设置是否开启外部表VPC支持。具体操作,请参见Hologres外部表
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.groupby.position.alias 设置是否开启将groupby中的整型常量做为SELECT的列序号处理。
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.groupby.skewindata 设置是否开启groupby防倾斜机制。
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.orderby.position.alias 设置是否开启将orderby中的整型常量做为SELECT的列序号处理。
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.groupby.orderby.position.alias 设置是否开启将group byorder by中的整型常量做为SELECT的列序号处理。推荐使用该参数。
      说明 对于存量项目,如果在项目级别开启该参数,可能会对您已有的任务解析和执行操作造成影响,请确认并务必保证存量任务在此参数设置下仍可以按照原有逻辑正确执行后,再修改该参数。否则,请在Session级别设置。
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.jobconf.odps2 设置是否开启jobconf2功能来生成作业执行计划。
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.mapjoin.memory.max 设置MAPJOIN场景小表读入内存后的大小,单位MiB。 取值范围:0 MiB~8192 MiB
      SQL Session odps.sql.metering.value.max 设置单SQL消费限制值。关于消费监控告警的更多信息,请参见消费控制 -
      SQL Session odps.sql.python.version 设置运行SQL句的Python版本。
      • cp27
      • cp37
      SQL Session odps.sql.select.output.format 设置是否在MaxCompute客户端的返回结果中显示表头信息。关于使用MaxCompute客户端的更多信息,请参见使用客户端(odpscmd)连接
      • {""needHeader"":false,""fieldDelim"":""""}:不显示表头信息。
      • {""needHeader"":true,""fieldDelim"":""""}:显示表头信息。
      SQL Session odps.sql.timezone 设置MaxCompute项目的时区。关于时区信息的更多信息,请参见时区配置操作 -
      SQL Session odps.sql.unstructured.data.oss.use.https 设置访问外部表时,是否需要开启底层通过HTTPS方式获取数据的机制。关于OSS外部表的更多信息,请参见创建OSS外部表
      • True:打开。
      • False:关闭。
      SQL Session odps.sql.unstructured.oss.commit.mode 设置是否开启通过OSS的分片上传功能向OSS外部表写入数据。关于如何将数据输出到OSS的更多信息,请参见将数据写入OSS
      • True:打开。
      • False:关闭。
      SQL Session/Project odps.sql.executionengine.enable.string.to.date.full.format 如果需要转换带时分秒的日期字符串,需要把该参数值设置成True,默认值是False。
      • True:打开。
      • False:关闭。
      SQL Session/Project odps.sql.executionengine.enable.rand.time.seed 当参数值为False时,Rand函数使用当前InstanceId作为随机数初始化Seed,可以保证函数幂等。

      当Flag值为True时,Rand函数使用当前系统时间作为随机数初始化的Seed,但Rand函数不再幂等,不能作为Shuffle Key使用,会导致重跑的结果不相同。

      默认值为False。

      • True:打开。
      • False:关闭。
      SQL Project odps.sql.allow.fullscan 设置项目空间是否允许全表扫描。全表扫描会占用大量资源,为提升处理效率,不建议开启该功能。
      • True:允许全表扫描。
      • False:禁止全表扫描。
      SQL Project odps.table.lifecycle 设置项目空间下的表是否需要配置生命周期。
      • Optional:创建表时,Lifecycle子句为可选设置,如果不设置表的生命周期,则该表永久有效。
      • Mandatory:Lifecycle子句为必选设置,用户必须设置表的生命周期。
      • Inherit:创建表时,如果不设置表的生命周期,则该表的生命周期为odps.table.lifecycle.value的值。
      SQL Project odps.table.lifecycle.value 设置表的生命周期。单位:天。 取值范围:1~37231,默认值为37231。
      SQL Project READ_TABLE_MAX_ROW 设置SELECT语句返回的数据条数。 取值范围:1~10000,默认值为10000。
      SQL Project odps.sql.type.system.odps2 2.0新数据类型开关。关于2.0数据类型的更多信息,请参见2.0数据类型版本
      • True:打开。
      • False:关闭。
      SQL Project odps.sql.hive.compatible Hive兼容模式开关。打开Hive兼容模式后,MaxCompute才支持Hive指定的各种语法,例如inputRecordReaderoutputRecordReaderSerde。关于兼容数据类型的更多信息,请参见Hive兼容数据类型版本
      • True:打开。
      • False:关闭。
      SQL Project odps.output.field.formatter 设置SQL查询结果的动态脱敏规则。关于MaxCompute数据动态脱敏的更多信息,请参加数据动态脱敏 自定义的动态脱敏规则。
      SQL Project odps.sql.metering.value.max 设置单SQL消费限制值。关于消费者监控的更多信息,请参见消费控制 -
      SQL Project odps.sql.acid.table.enable 设置是否开启ACID机制。关于ACID的更多信息,请参见ACID语义
      • True:打开。
      • False:关闭。
      SQL Project odps.sql.timezone 设置MaxCompute项目的时区。关于时区的更多信息,请参见时区配置操作 -
      SQL Project odps.sql.unstructured.oss.commit.mode 设置是否开启通过OSS的分片上传功能向OSS外部表写入数据。具体操作,请参见将数据写入OSS
      • True:打开。
      • False:关闭。
      SQL Project odps.sql.groupby.orderby.position.alias 设置是否开启将group byorder by中的整型常量做为SELECT的列序号处理。
      说明 对于存量项目,如果在项目级别开启该参数,可能会对您已有的任务解析和执行操作造成影响,请确认并务必保证存量任务在此参数设置下仍可以按照原有逻辑正确执行后,再修改该参数。否则,请在Session级别设置
      • True:打开。
      • False:关闭。
      计量计费 Session odps.task.quota.preference.tag 指定作业的Quota组(即MaxCompute管家中的配额组)。使用包年包月资源的项目空间可以通过该属性指定作业使用某个具体的二级Quota组。如果提交作业时设置的Quota Tag和某个Quota组属性中的Quota Tag相等,作业就会被优先调度到这个Quota组中。否则,会被调度到所属项目空间指定的Quota组中。
      执行如下语句进行设置。
      set odps.task.quota.preference.tag = payasyougo
      说明 该属性当前仅支持SQL作业。
      tag_name为MaxCompute管家中配额组的配额组标签。配额组只能取作业所属项目空间Owner所在区域的配额组。tag_name只允许使用字母、数字和下划线(_)。
      计量计费 Session odps.task.wlm.quota 用指定的资源去跑当前Session的任务,值为对应的QuotaName。 -
      安全与权限 Project odps.forbid.fetch.result.by.bearertoken 设置是否禁止Logview的Result页签显示作业运行结果。该参数主要用于保护数据安全。
      • True:禁止显示作业运行结果。
      • False:允许显示作业运行结果。
      安全与权限 Project LabelSecurity 设置是否开启LabelSecurity安全机制。关于LabelSecurity安全机制的更多信息,请参见Label权限控制
      • True:打开。
      • False:关闭。
      安全与权限 Project CheckPermissionUsingACL 设置是否开启ACL授权机制。关于ACL授权的更多信息,请参见MaxCompute权限
      • True:打开。
      • False:关闭。
      安全与权限 Project CheckPermissionUsingPolicy 设置是否开启Policy授权机制。关于Policy授权的更多信息,请参见Policy权限控制
      • True:打开。
      • False:关闭。
      安全与权限 Project ObjectCreatorHasAccessPermission 设置对象创建者是否默认拥有访问权限。
      • True:允许对象创建者默认拥有访问权限。
      • False:禁止对象创建者默认拥有访问权限。
      安全与权限 Project ObjectCreatorHasGrantPermission 设置对象创建者是否默认拥有授权权限。
      • True:允许对象创建者默认拥有授权权限。
      • False:禁止对象创建者默认拥有授权权限。
      安全与权限 Project ProjectProtection 设置是否开启数据保护机制。关于数据保护机制的更多信息,请参见数据保护机制
      • True:打开。
      • False:关闭。
      安全与权限 Project odps.output.field.formatter 设置SQL查询结果的动态脱敏规则。关于动态脱敏的更多信息,请参见数据动态脱敏 自定义的动态脱敏规则。
      权限安全 Project odps.security.ip.whitelist 设置经典网络场景下可以访问项目空间的IP白名单。关于IP白名单的更多信息,请参见管理IP白名单 IP列表,以英文半角逗号(,)分隔。
      权限安全 Project odps.security.vpc.whitelist 指定VPC网络场景下可以访问项目空间的IP白名单。关于IP白名单的更多信息,请参见管理IP白名单 RegionID_VPCID[IP Address]
      数据类型 Project odps.sql.decimal.odps2 DECIMAL 2.0数据类型DECIMAL(precision,scale)开关。关于数据类型的更多信息,请参见2.0数据类型版本
      • True:打开。
      • False:关闭。
      数据存储 Project odps.timemachine.retention.days 设置备份数据的保留天数。关于数据备份的更多信息,请参见备份与恢复 取值范围:0~30,默认值为1。
  • 使用示例
    --调整每个Mapper读取数据的大小为256 MB。
    set odps.stage.mapper.split.size=256;

show flags

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