建立MaxCompute專案空間後,您需要進入專案空間才可以執行後續開發、分析、營運等一系列操作。
工具平台
本文中的命令您可以在MaxCompute用戶端或DataWorks的ODPS SQL節點中執行。
注意事項
專案空間非工作空間。專案空間名稱擷取方式:登入MaxCompute控制台,選擇工作區 > 專案管理,專案管理頁面的MaxCompute專案名。
MaxCompute沒有提供建立和刪除專案空間的命令。建立專案空間操作詳情請參見建立MaxCompute專案。
查看專案空間屬性
顯示當前專案空間Project級的屬性配置資訊。MaxCompute也支援查看Session級的屬性,詳情請參見show flags。
命令格式
setproject;
屬性說明
專案空間的常用屬性如下。
分類
影響範圍
屬性名稱
屬性描述
取值範圍
主要影響的SQL命令和函數
生態
Session
console.sql.result.instancetunnel
InstanceTunnel開關。關於Tunnel命令的更多資訊,請參見使用說明。
True:開啟。
False:關閉。
SELECT
調度
Session
odps.stage.mapper.mem
設定每個Map Worker的記憶體大小。
取值範圍:256 MiB~12288 MiB。預設值為1024 MiB。
ALL
調度
Session
odps.stage.reducer.mem
設定每個Reduce Worker的記憶體大小。
取值範圍:256 MiB~12288 MiB。預設值為1024 MiB。
ALL
調度
Session
odps.stage.joiner.mem
設定每個Join Worker的記憶體大小。
取值範圍:256 MiB~12288 MiB。預設值為1024 MiB。
ALL
調度
Session
odps.stage.mem
設定MaxCompute指定任務下所有Worker的記憶體大小。優先順序低於odps.stage.mapper.mem、odps.stage.reducer.mem和odps.stage.joiner.mem屬性。
取值範圍:256 MiB~12288 MiB。無預設值。
ALL
調度
Session
odps.stage.mapper.split.size
修改每個Map Worker的輸入資料量,即輸入檔案的分區大小,從而間接控制每個Map階段下Worker的數量。
說明SQL語句中使用Limit,會限制Limit作用的Worker單並發運行。因此在設定該配置項的時候,SQL語句中應避免使用Limit。
單位MiB,預設值為256 MiB。
ALL
調度
Session
odps.stage.reducer.num
修改每個Reduce階段的Worker數量。
說明SQL語句中使用Limit,會限制Limit作用的Worker單並發運行。因此在設定該配置項的時候,SQL語句中應避免使用Limit。
-
ALL
調度
Session
odps.stage.joiner.num
修改每個Join階段的Worker數量。
說明SQL語句中使用Limit,會限制Limit作用的Worker單並發運行。因此在設定該配置項的時候,SQL語句中應避免使用Limit。
-
ALL
調度
Session
odps.stage.num
修改MaxCompute指定任務下所有Worker的並發數,優先順序低於odps.stage.mapper.split.size、odps.stage.reducer.mem和odps.stage.joiner.num屬性。
說明SQL語句中使用Limit,會限制Limit作用的Worker單並發運行。因此在設定該配置項的時候,SQL語句中應避免使用Limit。
-
ALL
調度
Project
odps.instance.priority.enable
使用訂用帳戶計算資源專案空間的作業優先順序功能開關。關於作業優先順序功能的更多資訊,請參見作業優先順序。
取值範圍:0~9,預設值為9。數值越小,優先順序越高。
ALL
SQL
Session
odps.sql.reshuffle.dynamicpt
動態分區開關,以避免拆分動態分區時產生過多小檔案。
True:開啟。
False:關閉。
說明如果產生的動態分區個數很少,建議將值設為False,以避免資料扭曲。
INSERT INTO
INSERT OVERWRITE
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:關閉。
UDF
SQL
Session
odps.sql.udf.jvm.memory
設定UDF JVM Heap使用的最大記憶體。
部分UDF在記憶體計算、排序的資料量比較大時,會報記憶體溢出錯誤,這時候可以調大該參數,但該方法只能暫時緩解,您需要從業務上去最佳化UDF代碼。
取值範圍:256 MiB~12288 MiB。預設值為1024 MiB。
UDF
SQL
Session
odps.sql.udf.timeout
設定UDF逾時時間。
取值範圍:0s~3600s。預設值為600s。
UDF
SQL
Session
odps.sql.session.resources
指定UDT引用的資源,可以指定多個,用英文半形逗號(,)分隔。關於引用資源的更多資訊,請參見UDT概述。
上傳的資源。
UDT
SQL
Session
odps.sql.udt.display.tostring
設定是否開啟將所有以UDT為最終輸出的列Wrap上java.util.Objects.toString(...)的機制。
True:開啟。
False:關閉。
UDT
SQL
Session
odps.sql.session.java.imports
指定UDT引用的Java Package,可以指定多個,用英文半形逗號(,)分隔。關於Java Package的更多資訊,請參見UDT概述。
上傳的Java Package。
UDT
SQL
Session
odps.sql.skewjoin
設定是否開啟SKEWJOIN功能,解決長尾問題。
True:開啟。
False:關閉。
SELECT
JOIN
SQL
Session
odps.sql.skewinfo
設定SKEWJOIN的目標Key及對應的值。具體操作,請參見資料扭曲調優。
-
SELECT
JOIN
SQL
Session
odps.sql.udf.ppr.deterministic
設定是否在自訂函數中開啟分區裁剪機制。關於分區裁剪資訊的更多資訊,請參見WHERE子句(where_condition)。
True:開啟。
False:關閉。
UDF
SQL
Session
odps.sql.udf.ppr.to.subquery
設定是否開啟忽略分區裁剪回填報錯問題機制。關於分區裁剪資訊的更多資訊,請參見WHERE子句(where_condition)。
True:開啟。
False:關閉。
UDF
SQL
Session
odps.optimizer.enable.range.partial.repartitioning
設定Range聚簇表是否開啟Shuffle Remove機制。
True:開啟。
False:關閉。
INSERT OVERWRITE
CREATE TABLE
SQL
Session
odps.optimizer.skew.join.topk.num
設定最佳化器運行Aggregate時擷取的熱值數量。具體操作,請參見SKEWJOIN HINT。
-
SKEWJOIN HINT
SQL
Session
odps.optimizer.stat.collect.auto
設定是否開啟Freeride功能,開啟後自動收集表的Column Stats。關於最佳化器資訊收集的更多資訊,請參見最佳化器資訊收集。
True:開啟。
False:關閉。
CREATE TABLE
INSERT INTO
INSERT OVERWRITE
SQL
Session
odps.optimizer.stat.collect.plan
設定收集計劃,收集指定列的指定Column Stats指標。關於最佳化器資訊收集的更多資訊,請參見最佳化器資訊收集。
-
CREATE TABLE
INSERT INTO
INSERT OVERWRITE
SQL
Session
odps.sql.external.net.vpc
設定是否開啟外部表格VPC支援。具體操作,請參見Hologres外部表格。
True:開啟。
False:關閉。
CREATE TABLE
SQL
Session
odps.sql.groupby.position.alias
設定是否開啟將groupby中的整型常量作為SELECT的列序號處理。
True:開啟。
False:關閉。
SELECT
GROUP BY
SQL
Session
odps.sql.groupby.skewindata
設定是否開啟groupby防傾斜機制。
True:開啟。
False:關閉。
GROUP BY
SQL
Session
odps.sql.orderby.position.alias
設定是否開啟將orderby中的整型常量作為SELECT的列序號處理。
True:開啟。
False:關閉。
ORDER BY
SELECT
SQL
Session
odps.sql.mapjoin.memory.max
設定MAPJOIN情境小表讀入記憶體後的大小,單位MiB。
取值範圍:0 MiB~8192 MiB
JOIN
SQL
Session
odps.sql.python.version
設定運行SQL句的Python版本。
cp27
cp37
UDTF
UDAF
SQL
Session
odps.sql.select.output.format
設定是否在MaxCompute用戶端的返回結果中顯示錶頭資訊。關於使用MaxCompute用戶端的更多資訊,請參見使用本地用戶端(odpscmd)串連。
{""needHeader"":false,""fieldDelim"":""""}
:不顯示錶頭資訊。{""needHeader"":true,""fieldDelim"":""""}
:顯示錶頭資訊。
ALL
SQL
Session
odps.sql.unstructured.data.oss.use.https
設定訪問外部表格時,是否需要開啟底層通過HTTPS方式擷取資料的機制。關於OSS外部表格的更多資訊,請參見建立OSS外部表格。
True:開啟。
False:關閉。
ALL
SQL
Session
odps.sql.decimal.tostring.trimzero
當資料類型為Decimal時是否去掉小數點後面末尾的零,預設值為
True
,代表預設去零。True:去掉小資料點後末尾的零。
False:保留小資料點後末尾的零。
CAST
SQL
Session
odps.sql.unstructured.tablestore.put.row
OTS外部表格支援指定PutRow的寫入方式。
說明PutRow詳情請參考PutRow。
True:開啟
False:關閉
ALL
SQL
Session
odps.sql.unstructured.external.max.dop
外表訪問的Worker的最大並發度。
大於0的整數。
外表查詢寫入
SQL
Project
odps.sql.allow.fullscan
設定專案空間是否允許全表掃描。全表掃描會佔用大量資源,為提升處理效率,不建議開啟該功能。
True:允許全表掃描。
False:禁止全表掃描。
SELECT
SQL
Project
odps.table.lifecycle
設定專案空間下的表是否需要配置生命週期。
Optional:建立表時,Lifecycle子句為可選設定,如果不設定表的生命週期,則該表永久有效。
Mandatory:Lifecycle子句為必選設定,使用者必須設定表的生命週期。
Inherit:建立表時,如果不設定表的生命週期,則該表的生命週期為odps.table.lifecycle.value的值。
CREATE TABLE
SQL
Project
odps.table.lifecycle.value
設定表的生命週期。單位:天。
取值範圍:1~37231,預設值為37231。
CREATE TABLE
SQL
Project
READ_TABLE_MAX_ROW
設定SELECT語句返回的資料條數。
取值範圍:1~10000,預設值為10000。
SELECT
SQL
Project
odps.output.field.formatter
設定SQL查詢結果的動態脫敏規則。關於MaxCompute資料動態脫敏的更多資訊,請參加資料動態脫敏。
自訂的動態脫敏規則。
SELECT
SQL
Project
odps.sql.acid.table.enable
設定是否開啟ACID機制。關於ACID的更多資訊,請參見ACID語義。
True:開啟。
False:關閉。
ALL
SQL
Session/Project
odps.sql.executionengine.enable.string.to.date.full.format
如果需要轉換帶時分秒的日期文字,需要把該參數值設定成True,預設值是False。
True:開啟。
False:關閉。
CAST
SQL
Session/Project
odps.sql.executionengine.enable.rand.time.seed
當參數值為False時,Rand函數使用當前InstanceId作為隨機數初始化Seed,可以保證函數等冪。
當Flag值為True時,Rand函數使用當前系統時間作為隨機數初始化的Seed,但Rand函數不再等冪,不能作為Shuffle Key使用,會導致重跑的結果不相同。
預設值為False。
True:開啟。
False:關閉。
RAND
SQL
Session/Project
odps.sql.type.system.odps2
2.0新資料類型開關。關於2.0資料類型的更多資訊,請參見2.0資料類型版本。
True:開啟。
False:關閉。
MaxCompute 2.0擴充函數
SQL
Session/Project
odps.sql.hive.compatible
Hive相容模式開關。開啟Hive相容模式後,MaxCompute才支援Hive指定的各種文法,例如inputRecordReader、outputRecordReader和Serde。關於相容資料類型的更多資訊,請參見Hive相容資料類型版本。
True:開啟。
False:關閉。
ALL
SQL
Session/Project
odps.sql.metering.value.max
設定單SQL消費限制值。關於消費者監控的更多資訊,請參見消費監控警示消費控制。
-
ALL
SQL
Session/Project
odps.sql.timezone
設定MaxCompute專案的時區。關於時區的更多資訊,請參見時區配置操作。
-
ALL
SQL
Session/Project
odps.sql.unstructured.oss.commit.mode
設定是否開啟通過OSS的分區上傳功能向OSS外部表格寫入資料。具體操作,請參見將資料寫入OSS。
True:開啟。
False:關閉。
INSERT OVERWRITE
SQL
Session/Project
odps.sql.groupby.orderby.position.alias
設定是否開啟將group by和order by中的整型常量作為SELECT的列序號處理。
說明對於存量專案,如果在專案層級開啟該參數,可能會對您已有的任務解析和執行操作造成影響,請確認並務必保證存量任務在此參數設定下仍可以按照原有邏輯正確執行後,再修改該參數。否則,請在Session層級設定
True:開啟。
False:關閉。
GROUP BY
ORDER BY
SELECT
SQL
Session/Project
odps.ext.oss.orc.native
讀表時使用Native ORC Reader。
True:開啟。
False:關閉。
SELECT
SQL
Session/Project
odps.sql.job.max.time.hours
單作業最大執行時間。
說明若需要在專案層級設定,您可以通過申請連結或搜尋(DingTalk群號:11782920)加入MaxCompute開發人員社區釘群聯絡MaxCompute支援人員團隊在後台設定。
取值範圍為:24~72,預設值為24。
SQL作業
計量計費
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只允許使用字母、數字和底線(_)。
ALL
計量計費
Session
odps.task.wlm.quota
用指定的資源去跑當前Session的任務,值為對應的QuotaName。
-
ALL
安全與許可權
Project
odps.forbid.fetch.result.by.bearertoken
設定是否禁止Logview的Result頁簽顯示作業運行結果。該參數主要用於保護資料安全。
True:禁止顯示作業運行結果。
False:允許顯示作業運行結果。
ALL
安全與許可權
Project
LabelSecurity
設定是否開啟LabelSecurity安全機制。關於LabelSecurity安全機制的更多資訊,請參見Label許可權控制。
True:開啟。
False:關閉。
ALL
安全與許可權
Project
CheckPermissionUsingACL
設定是否開啟ACL授權機制。關於ACL授權的更多資訊,請參見MaxCompute許可權。
True:開啟。
False:關閉。
ALL
安全與許可權
Project
CheckPermissionUsingPolicy
設定是否開啟Policy授權機制。關於Policy授權的更多資訊,請參見Policy許可權控制。
True:開啟。
False:關閉。
ALL
安全與許可權
Project
ObjectCreatorHasAccessPermission
設定對象建立者是否預設擁有存取權限。
True:允許對象建立者預設擁有存取權限。
False:禁止對象建立者預設擁有存取權限。
ALL
安全與許可權
Project
ObjectCreatorHasGrantPermission
設定對象建立者是否預設擁有授權許可權。
True:允許對象建立者預設擁有授權許可權。
False:禁止對象建立者預設擁有授權許可權。
ALL
安全與許可權
Project
ProjectProtection
設定是否開啟資料保護機制。關於資料保護機制的更多資訊,請參見資料保護機制。
True:開啟。
False:關閉。
ALL
安全與許可權
Project
odps.output.field.formatter
設定SQL查詢結果的動態脫敏規則。關於動態脫敏的更多資訊,請參見資料動態脫敏。
自訂的動態脫敏規則。
SELECT
許可權安全
Project
odps.security.ip.whitelist
設定傳統網路情境下可以訪問專案空間的IP白名單。關於IP白名單的更多資訊,請參見管理IP白名單。
IP列表,以英文半形逗號(,)分隔。
ALL
許可權安全
Project
odps.security.vpc.whitelist
指定VPC網路情境下可以訪問專案空間的IP白名單。關於IP白名單的更多資訊,請參見管理IP白名單。
RegionID_VPCID[IP Address]
ALL
資料類型
Project
odps.sql.decimal.odps2
DECIMAL 2.0資料類型DECIMAL(precision,scale)開關。關於資料類型的更多資訊,請參見2.0資料類型版本。
True:開啟。
False:關閉。
ALL
資料存放區
Project
odps.timemachine.retention.days
設定備份資料的保留天數。關於資料備份的更多資訊,請參見備份與恢複。
取值範圍:0~30,預設值為1。
ALL
中繼資料
Project
odps.schema.evolution.enable
開通表結構變更能力。
True:開啟。
False(預設):關閉。
表結構變更。
設定專案空間屬性
設定專案空間的Project級屬性。設定專案空間屬性命令會存在0~5分鐘的時延。命令執行成功後,請您等待5分鐘後驗證執行結果。MaxCompute也支援設定Session級的屬性,詳情請參見set。
許可權說明
設定專案空間的Project級屬性,需操作帳號為專案的Owner或者帳號被賦予了專案層級的Super_Administrator和Admin角色,操作詳情請參見為使用者賦予內建管理角色。
命令格式
setproject <KEY>=<VALUE>;
參數說明
KEY:屬性名稱。
VALUE:屬性值。屬性詳情請參見查看專案空間屬性。
使用樣本
設定允許在專案空間執行全表掃描操作。
setproject odps.sql.allow.fullscan=true;
相關命令
ADD ACCOUNTPROVIDER:為當前專案空間增加RAM帳號體系。
USE:進入指定的、具有存取權限的專案空間。
LIST ACCOUNTPROVIDERS:顯示當前專案空間支援的帳號體系資訊。
REMOVE ACCOUNTPROVIDER:刪除當前專案空間支援的帳號體系資訊。