本文为您介绍MaxCompute产品功能的发布信息。
MaxCompute V49版本(2024年11月)
2024年11月正式发布MaxCompute SQL V49版本,新增功能如下:
SQL引擎能力增强
新功能
支持Bitmap index(位图索引):在基数较大(存在大量相同值)的列上建立索引,范围过滤场景下最多可过滤掉超过50%以上的数据,从而起到查询加速的效果。详情请参见Bitmap Index。
支持Bloomfilter index:布隆过滤器(Bloomfilter)是一种高效的概率型数据结构,MaxCompute支持使用Bloomfilter index处理大规模数据点查场景,减少查询过程中不必要的数据扫描,从而提高整体的查询效率和性能。详情请参见Bloomfilter index(Beta版本)。
内置函数
新增内置函数JSON_EXPLODE:支持将JSON数组或JSON对象中的每个元素拆解(展开)成多行记录。详情请参见JSON_EXPLODE。
语言增强
CREATE TABLE支持使用OR REPLACE更新表信息:如果目标表已存在,可以直接更新Meta信息。不需要先删除表后再创建,简化用户SQL语句的使用,提升易用性。详情请参见创建和删除表。
支持一次性注释SQL中的单行或多行内容,增强代码的可读性。详情请参见SQL注释。
支持SUBQUERY_MAPJOIN HINT:部分子查询(如SCALAR/IN/EXISTS)会在执行过程中被转换成JOIN进行计算,支持用户在SUBQUERY中通过显式指定Hint来使用MAPJOIN算法提升执行效率。详情请参见SUBQUERY_MAPJOIN HINT。
新增参数
行为变更
默认对所有DML操作开启动态分区转静态分区优化功能,以提升查询性能。该优化对于UPDATE/DELETE/MERGE INTO操作有行为变更影响。详情请参见动态分区转静态分区优化公告。
平台能力增强
行级访问控制:为了便于控制用户或角色对MaxCompute表中特定数据的访问,MaxCompute提供了行级访问控制功能,通过在原表上定义用户与数据(被允许访问的数据)的匹配规则,控制特定用户或角色仅可见其有权限访问的数据,并支持配合分层存储使用,提升数据安全性和合规性。详情请参见行级访问控制。
大数据AI(MaxFrame)
Logview 2.0适配MaxFrame,支持以下MaxFrame的相关功能,详情请参见通过Logview 2.0查看MaxFrame作业:
查看MaxFrame Session中提交的所有DAG的执行记录、运行耗时等信息。
交互式查看每个DAG中的SubDAG的执行顺序、运行时间、算子拓扑和状态关系。
支持查看每个子实例的设置、运行状态、内存和CPU等资源使用情况。
MaxFrame支持自动化打包服务:简化了Python开发中第三方包的管理操作。该服务支持在作业开发时声明所需的外部依赖包,在作业运行时,这些包会自动被打包并集成到作业环境中,无需手动上传,从而减少繁琐的打包管理工作。详情请参见自动化打包服务。
湖仓一体
JNI写入Parquet外部表时支持ZSTD压缩
相比原先Parquet外部表写入仅支持Uncompressed和Snappy压缩格式的文件 ,现新增对ZSTD压缩格式的支持,即创建Parquet外部表时支持写入ZSTD压缩格式的文件,以提升压缩率及读写性能,实现降本增效。详情请参见创建OSS外部表。
CsvStorageHandler/OpenCsvSerde数据读写补充数据类型支持
MaxCompute具备与Hive兼容的OpenCSV读写标准(以下简称CsvSerde),其数据类型为Hive兼容数据类型。此外,MaxCompute还提供了自定义的CsvStorageHandler读写标准(以下简称CsvHandler),其数据类型为ODPS2.0数据类型。尽管数据类型并不完全相同,但仍存在多种基本类型字段的交集,例如INT和FLOAT等。然而,二者在对这些数据类型的解析行为上仍存在诸多差异,并且尚未形成统一标准。例如对于FLOAT类型,CsvSerde规定了对INF等特殊值的处理,而CsvHandler则没有处理特殊值,仅尝试使用parseFloat方法进行解析,这导致用户在混合使用CsvHandler和CsvSerde时,会遇到基本数据类型解析行为不一致的问题。
此外,CsvStorageHandler支持BOOLEAN、TIMESTAMP、DATE、DATETIME等多种基本数据类型,便于将所有数据类型从MaxCompute导出至OSS,并以CSV格式存储。通过OSS进行跨区域复制后,数据可恢复至MaxCompute。
OSS外部表支持使用RAMRole身份进行STS鉴权
为了支持客户通过RAMRole身份(免AK)访问MaxCompute,或者通过云上其他产品使用RAM Role身份访问MaxCompute时,在外部表场景下能够顺利进行,现已优化了功能。原先由于外部表中包含MaxCompute访问对端产品的表属性集成的RAMRole,在角色扮演过程中无法获取到访问者的RAMRole身份中的用户信息,导致不支持直接以RAMRole身份访问这些外部表。现在,即便是在涉及外部表的情况下,也能确保RAMRole身份的有效利用与无缝访问。详情请参见创建OSS外部表。
Optimizer支持在Query执行中临时统计表的Stats,从而发现小表,优化查询计划
由于外部表查询的数据位于外部数据湖,为了确保数据的开放性,无法建立本地元数据,同时由于缺乏预先统计信息,查询优化器采用保守策略,导致查询效率低。现支持Optimizer在Query执行中临时统计表的Stats(统计信息)以发现小表,从而可以主动使用HashJoin、优化Join Order、减少大量Shuffle或缩短执行的Pipeline等方法,最终优化查询计划。详情请参见读取OSS数据。