全部產品
Search
文件中心

MaxCompute:SET

更新時間:Mar 13, 2025

對當前Session設定MaxCompute系統變數。

命令格式

SET <KEY>=<VALUE>

參數說明

  • KEY:屬性名稱。

  • VALUE:屬性值。

    Session級的常用屬性如下。

    屬性名稱

    屬性描述

    取值範圍

    console.sql.result.instancetunnel

    InstanceTunnel開關。詳情請參見使用說明

    • True:開啟。

    • False:關閉。

    odps.stage.mapper.mem

    設定每個Map Worker的記憶體大小。

    取值範圍:256 MB~12288 MB。

    預設值為1024 MB。

    odps.stage.reducer.mem

    設定每個Reduce Worker的記憶體大小。

    取值範圍:256 MB~12288 MB。

    預設值為1024 MB。

    odps.stage.joiner.mem

    設定每個Join Worker的記憶體大小。

    取值範圍:256 MB~12288 MB。

    預設值為1024 MB。

    odps.stage.mem

    設定MaxCompute指定任務下所有Worker的記憶體大小。優先順序低於odps.stage.mapper.memodps.stage.reducer.memodps.stage.joiner.mem屬性。

    取值範圍:256 MB~12288 MB。

    無預設值。

    odps.stage.mapper.split.size

    修改每個Map Worker的輸入資料量,即輸入檔案的分區大小,從而間接控制每個Map階段下Worker的數量。

    說明

    SQL語句中使用Limit,會限制Limit作用的Worker單並發運行。因此在設定該配置項的時候,SQL語句中應避免使用Limit。

    單位MB,預設值為256 MB。

    odps.stage.reducer.num

    修改每個Reduce階段的Worker數量。

    說明

    SQL語句中使用Limit,會限制Limit作用的Worker單並發運行。因此在設定該配置項的時候,SQL語句中應避免使用Limit。

    取值範圍:1~10000 個。

    odps.stage.joiner.num

    修改每個Join階段的Worker數量。

    說明

    SQL語句中使用Limit,會限制Limit作用的Worker單並發運行。因此在設定該配置項的時候,SQL語句中應避免使用Limit。

    取值範圍:1~10000 個。

    odps.stage.num

    修改MaxCompute指定任務下所有Worker的並發數,優先順序低於odps.stage.mapper.split.sizeodps.stage.reducer.numodps.stage.joiner.num屬性。

    說明

    SQL語句中使用Limit,會限制Limit作用的Worker單並發運行。因此在設定該配置項的時候,SQL語句中應避免使用Limit。

    取值範圍:1~10000 個。

    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;
    • 如果您預Crowdsourced Security Testing道每個複雜類型的值都在7 MB~8 MB間,同時指定了batch row count為32,則該值可以被調整為8 MB×32。

    • 如果輸出的表有複雜類型,或MAPJOIN小表有複雜類型,調整該值會影響到作業執行過程中使用的記憶體。根據前面的計算方法,值設的過大有可能導致OOM(Out Of Memory)記憶體溢出。

    單位Byte,預設值為67108864 Byte。

    odps.sql.udf.getjsonobj.new

    設定GET_JSON_OBJECT函數的返回行為是否開啟保留原始字串的方式。

    2021年4月20日及之後新建立的MaxCompute專案中,GET_JSON_OBJECT函數的返回行為預設為保留原始字串。2021年4月20日之前建立的MaxCompute專案中,GET_JSON_OBJECT函數的返回行為預設為JSON保留字元轉義,以免行為變更對存量作業造成影響。

    更多GET_JSON_OBJECT函數資訊,請參見GET_JSON_OBJECT

    • True:開啟。

    • False:關閉。

    odps.sql.udf.jvm.memory

    設定UDF JVM Heap使用的最大記憶體。

    某些UDF在記憶體計算、排序的資料量比較大時,會報記憶體溢出錯誤,這時候可以調大該參數,但該方法只能暫時緩解,您需要從業務上去最佳化UDF代碼。

    取值範圍:256 MB~12288 MB。

    預設值為1024 MB。

    odps.function.timeout

    設定UDF逾時時間。

    取值範圍:0 s~3600 s。

    預設值為600 s。

    LabelSecurity

    設定是否開啟LabelSecurity安全機制。更多LabelSecurity安全機制資訊,請參見Label許可權控制

    • 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授權資訊,請參見MaxCompute許可權

    • True:開啟。

    • False:關閉。

    CheckPermissionUsingPolicy

    設定是否開啟Policy授權機制。更多Policy授權資訊,請參見Policy許可權控制

    • True:開啟。

    • False:關閉。

    ObjectCreatorHasAccessPermission

    設定對象建立者是否預設擁有存取權限。

    • True:允許對象建立者預設擁有存取權限。

    • False:禁止對象建立者預設擁有存取權限。

    ObjectCreatorHasGrantPermission

    設定對象建立者是否預設擁有授權許可權。

    • True:允許對象建立者預設擁有授權許可權。

    • False:禁止對象建立者預設擁有授權許可權。

    ProjectProtection

    設定是否開啟資料保護機制。更多資料保護機制資訊,請參見資料保護機制

    • True:開啟。

    • False:關閉。

    odps.output.field.formatter

    設定SQL查詢結果的動態脫敏規則。更多動態脫敏資訊,請參見資料動態脫敏

    自訂的動態脫敏規則。

    odps.isolation.session.enable

    設定是否在單Session層級開啟動態脫敏。更多動態脫敏資訊,請參見資料動態脫敏

    • True:開啟。

    • False:關閉。

    odps.sql.skewjoin

    設定是否開啟SKEWJOIN功能,解決長尾問題。

    • True:開啟。

    • False:關閉。

    odps.sql.skewinfo

    設定SKEWJOIN的目標Key及對應的值。更多資訊,請參見資料扭曲調優

    -

    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支援。詳情請參見Hologres外部表格

    • True:開啟。

    • False:關閉。

    odps.sql.groupby.position.alias

    設定是否開啟將groupby中的整型常量做為SELECT的列序號處理。

    • True:開啟。

    • False:關閉。

    odps.sql.groupby.skewindata

    設定是否開啟groupby防傾斜機制。

    • True:開啟。

    • False:關閉。

    odps.sql.orderby.position.alias

    設定是否開啟將orderby中的整型常量做為SELECT的列序號處理。

    • True:開啟。

    • False:關閉。

    odps.sql.groupby.orderby.position.alias

    設定是否開啟將group byorder by中的整型常量做為SELECT的列序號處理。推薦使用該參數。

    說明

    對於存量專案,如果在專案層級開啟該參數,可能會對您已有的任務解析和執行操作造成影響,請確認並務必保證存量任務在此參數設定下仍可以按照原有邏輯正確執行後,再修改該參數。否則,請在Session層級設定。

    • True:開啟。

    • False:關閉。

    odps.sql.mapjoin.memory.max

    設定MAPJOIN情境小表讀入記憶體後的大小,單位MB。

    說明

    該參數同時受Task層級的總記憶體全域限制影響。同Task多個小表總記憶體全域上限=std::min(8G, odps.sql.mapjoin.memory.max * 同Task小表個數)

    取值範圍:0 MB~8192 MB。

    odps.sql.metering.value.max

    設定單SQL消費限制值。詳情請參見消費監控警示消費控制

    -

    odps.sql.python.version

    設定運行SQL句的Python版本。

    • cp27

    • cp37

    odps.sql.select.output.format

    設定是否在MaxCompute用戶端的返回結果中顯示錶頭資訊。詳情請參見使用本地用戶端(odpscmd)串連

    • {""needHeader"":false,""fieldDelim"":""""}:不顯示錶頭資訊。

    • {""needHeader"":true,""fieldDelim"":""""}:顯示錶頭資訊。

    odps.sql.timezone

    設定MaxCompute專案的時區。更多時區資訊,請參見時區配置操作

    -

    odps.sql.unstructured.data.oss.use.https

    設定訪問外部表格時,是否需要開啟底層通過HTTPS方式擷取資料的機制。更多資訊,請參見建立OSS外部表格

    • True:開啟。

    • False:關閉。

    odps.sql.unstructured.oss.commit.mode

    設定是否開啟通過OSS的分區上傳功能向OSS外部表格寫入資料。詳情請參見將資料寫入OSS

    • True:開啟。

    • False:關閉。

    odps.sql.decimal.tostring.trimzero

    當資料類型為Decimal時是否去掉小數點後面末尾的零,預設值為True,代表預設去零。

    • True:去掉小資料點後末尾的零。

    • False:保留小資料點後末尾的零。

    odps.sql.unstructured.tablestore.put.row

    OTS外部表格支援指定PutRow的寫入方式。

    說明

    PutRow詳情請參考PutRow

    • True:開啟。

    • False:關閉。

    odps.sql.unstructured.external.max.dop

    外部表格訪問的Worker的最大並發度。

    大於0的整數。

    odps.sql.executionengine.enable.string.to.date.full.format

    是否轉換帶時分秒的日期文字。

    • True:是。

    • False:否。

    預設值是False。

    odps.sql.executionengine.enable.rand.time.seed

    控制Rand函數使用系統時間或當前InstanceId作為隨機數初始化Seed。

    • True:Rand函數使用當前系統時間作為隨機數初始化的Seed,但Rand函數不再等冪,不能作為Shuffle Key使用,會導致重跑的結果不相同。

    • False:Rand函數使用當前InstanceId作為隨機數初始化Seed,可以保證函數等冪。

    預設值為False。

    odps.sql.type.json.enable

    JSON資料類型使用開關。關於JSON資料類型的更多資訊,請參見MaxCompute JSON類型使用指南

    • True:開啟。

    • False:關閉。

    odps.ext.oss.orc.native

    讀表時是否使用Native ORC Reader。

    • True:使用。

    • False:不使用。

    odps.sql.job.max.time.hours

    單作業最大執行時間。

    取值範圍為:1~72 小時。

    預設值為24 小時。

    odps.task.wlm.quota

    使用指定的資源去執行當前Session的任務,值為對應的QuotaName。關於Quota的更多資訊,請參見計算資源-Quota管理

    -

    說明

    若需要查詢當前Session設定MaxCompute系統變數,您可前往Logview的SourceXML中查看,詳情請參見使用Logview 2.0查看作業運行資訊

使用樣本

--調整每個Mapper讀取資料的大小為256 MB。
SET odps.stage.mapper.split.size=256;

相關命令

SHOW:顯示SET命令設定的屬性。