产品版本发布记录

本文为您介绍MaxCompute产品功能的发布信息。

MaxCompute V49版本(202411月)

202411月正式发布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

  • 新增参数

    • 原有的odps.stage.mapper.split.size参数仅支持在Mapper阶段进行整体设置,新增Flag支持灵活地指定表按行或按并行度进行切分。尤其是在表中每行数据的size较小,而后续计算负担较重的情况下,可以提高任务的并行度。详情请参见Flag参数列表

    • 当一个查询重复使用相同的分区表时,您可以设置set odps.optimizer.merge.partitioned.table=true;参数,系统会对分区表进行合并,以最大限度地减少对分区表的IO操作,提升性能。详情请参见Flag参数列表

  • 行为变更

    • 默认对所有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外部表写入仅支持UncompressedSnappy压缩格式的文件 ,现新增对ZSTD压缩格式的支持,即创建Parquet外部表时支持写入ZSTD压缩格式的文件,以提升压缩率及读写性能,实现降本增效。详情请参见创建OSS外部表

  • CsvStorageHandler/OpenCsvSerde数据读写补充数据类型支持

    • MaxCompute具备与Hive兼容的OpenCSV读写标准(以下简称CsvSerde),其数据类型为Hive兼容数据类型。此外,MaxCompute还提供了自定义的CsvStorageHandler读写标准(以下简称CsvHandler),其数据类型为ODPS2.0数据类型。尽管数据类型并不完全相同,但仍存在多种基本类型字段的交集,例如INTFLOAT等。然而,二者在对这些数据类型的解析行为上仍存在诸多差异,并且尚未形成统一标准。例如对于FLOAT类型,CsvSerde规定了对INF等特殊值的处理,而CsvHandler则没有处理特殊值,仅尝试使用parseFloat方法进行解析,这导致用户在混合使用CsvHandlerCsvSerde时,会遇到基本数据类型解析行为不一致的问题。

    • 此外,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,从而发现小表,优化查询计划

    由于外部表查询的数据位于外部数据湖,为了确保数据的开放性,无法建立本地元数据,同时由于缺乏预先统计信息,查询优化器采用保守策略,导致查询效率低。现支持OptimizerQuery执行中临时统计表的Stats(统计信息)以发现小表,从而可以主动使用HashJoin、优化Join Order、减少大量Shuffle或缩短执行的Pipeline等方法,最终优化查询计划。详情请参见读取OSS数据