亲爱的社区小伙伴们,Apache Doris 4.0.2 版本已正式发布。此版本新增了在 AI & Search、函数、物化视图、Lakehouse 等方面的功能,并同步进行了多项优化改进及问题修复,欢迎下载体验!
新增功能
AI & Search
- 倒排索引支持自定义分析器,包含拼音分词器和拼音过滤器
- 倒排索引的搜索函数新增多位置短语查询(PhraseQuery)支持
- 新增 ANN 索引仅扫描能力
函数
- 新增
sem聚合函数 - 支持源自 Hive 的
factorial简单 SQL 函数 - 部分正则表达式函数新增零宽断言支持
- JSON 类型支持 GROUP BY 和 DISTINCT 操作
- 新增 add/sub_time 时间函数
- 新增 deduplicate_map 函数
物化视图
- 非分区基表数据变更时,物化视图仍可参与透明查询重写
- 创建 MTMV 支持基于视图创建
- MTMV 刷新支持多 PCT 表
- 物化视图包含窗口函数时,支持窗口函数重写
Lakehouse
- 新增 Doris Catalog,该功能允许用户通过 Catalog 能力关联多个独立的 Doris 集群并进行高效的联邦数据查询。解决 Doris 集群间数据无法关联查询的问题。文档:https://doris.apache.org/docs/4.x/lakehouse/catalogs/doris-catalog
- 支持通过 rewrite_data_files 方法对 Iceberg 表进行 compaction 操作。该操作允许用户对 Iceberg 小文件进行合并,从而优化读取效率。文档:https://doris.apache.org/docs/4.x/lakehouse/catalogs/iceberg-catalog#rewrite_data_files
- 支持通过 WARM UP 语句对 Hive、Iceberg、Paimon 等外部表数据进行缓存预热。文档:https://doris.apache.org/docs/4.x/lakehouse/data-cache#cache-warmup
- 支持通过 ALTER 语句对 Iceberg 表进行 Partition Evolution 操作。文档:https://doris.apache.org/docs/4.x/lakehouse/catalogs/iceberg-catalog#partition-evolution
- 支持 HTTP Table Valued Function,支持通过 Table Valued Function 直接读取 HTTP 资源文件。文档:https://doris.apache.org/docs/4.x/sql-manual/sql-functions/table-valued-functions/http
- 支持直接访问 Huggingface 上的数据集。文档:https://doris.apache.org/docs/4.x/lakehouse/huggingface
- 支持通过 Iceberg REST Catalog 协议访问 Microsoft OneLake。文档:https://doris.apache.org/docs/4.x/lakehouse/best-practices/doris-onelake
- 支持直接映射 Hive、Iceberg、Paimon、JDBC 外表中的 binary 类型到 Doris 的 varbinary 类型。请参阅各 Catalog 文档的【列映射】小节。
优化改进
- 优化
FROM_UNIXTIME函数性能 - 移除 PartitionKey 比较中的
castTo转换操作,提升分区处理效率 - 降低 Catalog 中 Column 类的内存占用
- Ann 索引训练前累积多个小批次数据,提升训练效率
- 升级 Hadoop 依赖到 3.4.2 版本
- 优化 FE 和 BE 的优雅退出机制,降低节点退出对查询的影响
- 优化对包含大量分区的 hive 表的写入的效率
- 优化 Paimon 表 Split 占用内存过大的问题
- 优化对 Parquet RLE_DICTIONARY 编码的读取效率
- 优化 FE 和 BE 的优雅退出机制,降低节点退出对查询的影响
问题修复
查询
- 修复输入为 null 时
utc_time函数返回结果错误的问题 - 修复 UNION ALL 结合 TVF 时抛出异常的问题
- 修复唯一键表创建物化视图时,WHERE 子句包含非键列的问题
- 修复 window 函数:LAG/LEAD 偏移参数支持常量表达式计算
- 修复聚合函数:可空列投影前下推聚合操作异常;非空列 count 下推聚合问题
- 修复时间函数:second/microsecond 函数未处理时间字面量;time_to_sec 处理 null 值时因垃圾值报错
- 修复 AI 函数:_exec_plan_fragment_impl 调用 AI 函数时出现未知错误
- 修复地理信息:geo 模块内存泄漏
- 修复 information_schema:偏移时区格式不兼容
物化视图与模式变更
- 修复物化视图包含分组集合和扫描过滤器时重写失败的问题
- 修复大流量模式变更时读取单行集非重叠段导致的 coredump 问题
存算分离
- 修复 TopN 查询中广播远程读取的问题
- 修复云环境下删除 tablet 任务堆积的问题
- 修复云环境首次启动时服务上线耗时过长的问题
Lakehouse
- 修复某些情况下,Hive 分区变更导致元数据缓存不一致的问题
- 修复写入 TIMESTAMP 类型分区的 Iceberg 表错误的问题
- 修复 Paimon 表 Incremental Read 行为和 Spark 不一致的问题
- 修复某些情况下,外表元数据缓存可能导致的死锁问题
- 修复 BE 端 s3 client 线程数不合理导致的 IO 吞吐低的问题
- 修复某些情况,写入存储在非 S3 对象存储上的外表时失败的问题
- 修复某些情况下,使用 query() 进行 JDBC Catalog SQL 透传失败的问题
- 修复 JNI Reader 时间统计导致读取性能下降的问题
- 修复 BE 侧 jni.log 无法打印的问题
其他
- 修复在非 Master 阶段 UNSET GLOBAL 变量时错误的问题
- 修复某些情况下,异常的 export 任务无法取消的问题