產(chǎn)品版本發(fā)布記錄
本文為您介紹MaxCompute產(chǎn)品功能的發(fā)布信息。
MaxCompute V49版本(2024年11月)
2024年11月正式發(fā)布MaxCompute SQL V49版本,新增功能如下:
SQL引擎能力增強
新功能
支持Bitmap index(位圖索引):在基數(shù)較大(存在大量相同值)的列上建立索引,范圍過濾場景下最多可過濾掉超過50%以上的數(shù)據(jù),從而起到查詢加速的效果。詳情請參見Bitmap Index。
支持Bloomfilter index:布隆過濾器(Bloomfilter)是一種高效的概率型數(shù)據(jù)結(jié)構(gòu),MaxCompute支持使用Bloomfilter index處理大規(guī)模數(shù)據(jù)點查場景,減少查詢過程中不必要的數(shù)據(jù)掃描,從而提高整體的查詢效率和性能。詳情請參見Bloomfilter index(Beta版本)。
內(nèi)置函數(shù)
新增內(nèi)置函數(shù)JSON_EXPLODE:支持將JSON數(shù)組或JSON對象中的每個元素拆解(展開)成多行記錄。詳情請參見JSON_EXPLODE。
語言增強
CREATE TABLE支持使用OR REPLACE更新表信息:如果目標(biāo)表已存在,可以直接更新Meta信息。不需要先刪除表后再創(chuàng)建,簡化用戶SQL語句的使用,提升易用性。詳情請參見創(chuàng)建和刪除表。
支持一次性注釋SQL中的單行或多行內(nèi)容,增強代碼的可讀性。詳情請參見SQL注釋。
支持SUBQUERY_MAPJOIN HINT:部分子查詢(如SCALAR/IN/EXISTS)會在執(zhí)行過程中被轉(zhuǎn)換成JOIN進行計算,支持用戶在SUBQUERY中通過顯式指定Hint來使用MAPJOIN算法提升執(zhí)行效率。詳情請參見SUBQUERY_MAPJOIN HINT。
新增參數(shù)
原有的
odps.stage.mapper.split.size
參數(shù)僅支持在Mapper階段進行整體設(shè)置,新增Flag支持靈活地指定表按行或按并行度進行切分。尤其是在表中每行數(shù)據(jù)的size較小,而后續(xù)計算負(fù)擔(dān)較重的情況下,可以提高任務(wù)的并行度。詳情請參見Flag參數(shù)列表。當(dāng)一個查詢重復(fù)使用相同的分區(qū)表時,您可以設(shè)置
set odps.optimizer.merge.partitioned.table=true;
參數(shù),系統(tǒng)會對分區(qū)表進行合并,以最大限度地減少對分區(qū)表的IO操作,提升性能。詳情請參見Flag參數(shù)列表。
行為變更
默認(rèn)對所有DML操作開啟動態(tài)分區(qū)轉(zhuǎn)靜態(tài)分區(qū)優(yōu)化功能,以提升查詢性能。該優(yōu)化對于UPDATE/DELETE/MERGE INTO操作有行為變更影響。詳情請參見動態(tài)分區(qū)轉(zhuǎn)靜態(tài)分區(qū)優(yōu)化公告。
平臺能力增強
行級訪問控制:為了便于控制用戶或角色對MaxCompute表中特定數(shù)據(jù)的訪問,MaxCompute提供了行級訪問控制功能,通過在原表上定義用戶與數(shù)據(jù)(被允許訪問的數(shù)據(jù))的匹配規(guī)則,控制特定用戶或角色僅可見其有權(quán)限訪問的數(shù)據(jù),并支持配合分層存儲使用,提升數(shù)據(jù)安全性和合規(guī)性。詳情請參見行級訪問控制。
大數(shù)據(jù)AI(MaxFrame)
Logview 2.0適配MaxFrame,支持以下MaxFrame的相關(guān)功能,詳情請參見通過Logview 2.0查看MaxFrame作業(yè):
查看MaxFrame Session中提交的所有DAG的執(zhí)行記錄、運行耗時等信息。
交互式查看每個DAG中的SubDAG的執(zhí)行順序、運行時間、算子拓?fù)浜蜖顟B(tài)關(guān)系。
支持查看每個子實例的設(shè)置、運行狀態(tài)、內(nèi)存和CPU等資源使用情況。
MaxFrame支持自動化打包服務(wù):簡化了Python開發(fā)中第三方包的管理操作。該服務(wù)支持在作業(yè)開發(fā)時聲明所需的外部依賴包,在作業(yè)運行時,這些包會自動被打包并集成到作業(yè)環(huán)境中,無需手動上傳,從而減少繁瑣的打包管理工作。詳情請參見自動化打包服務(wù)。
湖倉一體
JNI寫入Parquet外部表時支持ZSTD壓縮
相比原先Parquet外部表寫入僅支持Uncompressed和Snappy壓縮格式的文件 ,現(xiàn)新增對ZSTD壓縮格式的支持,即創(chuàng)建Parquet外部表時支持寫入ZSTD壓縮格式的文件,以提升壓縮率及讀寫性能,實現(xiàn)降本增效。詳情請參見創(chuàng)建OSS外部表。
CsvStorageHandler/OpenCsvSerde數(shù)據(jù)讀寫補充數(shù)據(jù)類型支持
MaxCompute具備與Hive兼容的OpenCSV讀寫標(biāo)準(zhǔn)(以下簡稱CsvSerde),其數(shù)據(jù)類型為Hive兼容數(shù)據(jù)類型。此外,MaxCompute還提供了自定義的CsvStorageHandler讀寫標(biāo)準(zhǔn)(以下簡稱CsvHandler),其數(shù)據(jù)類型為ODPS2.0數(shù)據(jù)類型。盡管數(shù)據(jù)類型并不完全相同,但仍存在多種基本類型字段的交集,例如INT和FLOAT等。然而,二者在對這些數(shù)據(jù)類型的解析行為上仍存在諸多差異,并且尚未形成統(tǒng)一標(biāo)準(zhǔn)。例如對于FLOAT類型,CsvSerde規(guī)定了對INF等特殊值的處理,而CsvHandler則沒有處理特殊值,僅嘗試使用parseFloat方法進行解析,這導(dǎo)致用戶在混合使用CsvHandler和CsvSerde時,會遇到基本數(shù)據(jù)類型解析行為不一致的問題。
此外,CsvStorageHandler支持BOOLEAN、TIMESTAMP、DATE、DATETIME等多種基本數(shù)據(jù)類型,便于將所有數(shù)據(jù)類型從MaxCompute導(dǎo)出至OSS,并以CSV格式存儲。通過OSS進行跨區(qū)域復(fù)制后,數(shù)據(jù)可恢復(fù)至MaxCompute。
OSS外部表支持使用RAMRole身份進行STS鑒權(quán)
為了支持客戶通過RAMRole身份(免AK)訪問MaxCompute,或者通過云上其他產(chǎn)品使用RAM Role身份訪問MaxCompute時,在外部表場景下能夠順利進行,現(xiàn)已優(yōu)化了功能。原先由于外部表中包含MaxCompute訪問對端產(chǎn)品的表屬性集成的RAMRole,在角色扮演過程中無法獲取到訪問者的RAMRole身份中的用戶信息,導(dǎo)致不支持直接以RAMRole身份訪問這些外部表。現(xiàn)在,即便是在涉及外部表的情況下,也能確保RAMRole身份的有效利用與無縫訪問。詳情請參見創(chuàng)建OSS外部表。
Optimizer支持在Query執(zhí)行中臨時統(tǒng)計表的Stats,從而發(fā)現(xiàn)小表,優(yōu)化查詢計劃
由于外部表查詢的數(shù)據(jù)位于外部數(shù)據(jù)湖,為了確保數(shù)據(jù)的開放性,無法建立本地元數(shù)據(jù),同時由于缺乏預(yù)先統(tǒng)計信息,查詢優(yōu)化器采用保守策略,導(dǎo)致查詢效率低。現(xiàn)支持Optimizer在Query執(zhí)行中臨時統(tǒng)計表的Stats(統(tǒng)計信息)以發(fā)現(xiàn)小表,從而可以主動使用HashJoin、優(yōu)化Join Order、減少大量Shuffle或縮短執(zhí)行的Pipeline等方法,最終優(yōu)化查詢計劃。詳情請參見讀取OSS數(shù)據(jù)。