亲爱的社区小伙伴们,我们很高兴地宣布,Apache Doris 于 2023 年 2 月 15 日迎来 1.2.2 Release 版本的正式发布!在新版本中,Apache Doris 团队修复了自 1.2.1 版本发布以来超过 200 个问题或性能改进项。同时,1.2.2 版本作为 1.2 LTS 的迭代版本,具备更高的稳定性,建议用户升级到这个版本
GitHub下载:https://github.com/apache/doris/releases/tag/1.2.2-rc01
官网下载页:https://doris.apache.org/zh-CN/download
New Feature
数据湖分析
-
支持自动同步 Hive Metastore 元数据信息。 默认情况下外部数据源的元数据变更,如创建或删除表、加减列等操作不会同步给 Doris,用户需要使用
REFRESH CATALOG
命令手动刷新元数据。在 1.2.2 版本中支持自动刷新 Hive Metastore 元数据信息,通过让 FE 节点定时读取 HMS 的 notification event 来感知 Hive 表元数据的变更情况。参考文档:https://doris.apache.org/docs/dev/lakehouse/multi-catalog/ -
支持读取 Iceberg Snapshot 以及查询 Snapshot 历史。 在执行 Iceberg 数据写入时,每一次写操作都会产生一个新的快照。默认情况下通过 Apache Doris 读取 Iceberg 表仅会读取最新版本的快照。在 1.2.2 版本中可以使用
FOR TIME AS OF
和FOR VERSION AS OF
语句,根据快照 ID 或者快照产生的时间读取历史版本的数据,也可以使用 iceberg_meta 表函数查询指定表的快照信息。参考文档:https://doris.apache.org/docs/dev/lakehouse/multi-catalog/iceberg -
JDBC Catalog 支持 PostgreSQL、Clickhouse、Oracle、SQLServer。
-
JDBC Catalog 支持 insert into 操作。 在 Doris 中建立 JDBC Catalog 后,可以通过 insert into 语句直接写入数据,也可以将 Doris 执行完查询之后的结果写入 JDBC Catalog,或者是从一个 JDBC 外表将数据导入另一个 JDBC 外表。参考文档:https://doris.apache.org/docs/dev/lakehouse/multi-catalog/jdbc/
自动分桶推算
支持通过 DISTRIBUTED BY HASH(……) BUCKETS AUTO
语句设置自动分桶,系统帮助用户设定以及伸缩不同分区的分桶数,使分桶数保持在一个相对合适的范围内。参考文档:https://mp.weixin.qq.com/s/DSyZGJtjQZUYUsvfK0IcCg
新增函数
增加归类分析函数 width_bucket
。参考文档:https://doris.apache.org/zh-CN/docs/dev/sql-manual/sql-functions/width-bucket/#description
Behavior Changes
默认情况下禁用 BE 的 Page Cache
关闭此配置以优化内存使用并降低内存 OOM 的风险,但有可能增加一些小查询的查询延迟。如果您对查询延迟敏感,或者具有高并发小查询场景,可以配置 disable_storage_page_cache=false
以再次启用 Page Cache。
增加新 Session 变量 group_by_and_having_use_alias_first
用于控制 group by 和 having 语句是否优先使用列的别名,而非从 From 语句里寻找列的名字,默认为false。
Improvement
Compaction 优化
-
支持 Vetical Compaction。在过去版本中,宽列场景 Compaction 往往会带来大量的内存开销。在 1.2.2 版本中,Vertical Compaction 采用了按列组的方式进行数据合并,单次合并只需要加载部分列的数据,能够极大减少合并过程中的内存占用。在实际测试中,Vertical compaction 使用内存仅为原有 compaction 算法的 1/10,同时 Compaction 速率提升15%。
-
支持 Segment Compaction。在过去版本中,当用户大数据量高频导入时可能会遇到 -238 以及 -235 问题,Segment Compaction 允许在导入数据的同时进行数据的合并,以有效控制 Segment 文件的数量,提升高频导入的系统稳定性。
参考文档:https://doris.apache.org/docs/dev/advanced/best-practice/compaction
数据湖分析
-
Hive Catalog 支持访问 Hive 1/2/3 版本。参考文档:https://doris.apache.org/docs/dev/lakehouse/multi-catalog/hive/
-
Hive Catalog 可以使用 Broker 访问数据存储在 JuiceFS 的 Hive。参考文档:https://doris.apache.org/docs/dev/lakehouse/multi-catalog/iceberg
-
Iceberg Catalog 支持 Hive Metastore 和 Rest 作为元数据服务。参考文档:https://doris.apache.org/docs/dev/lakehouse/multi-catalog/iceberg
-
ES Catalog 支持 元数据字段 _id 列映射。参考文档:https://doris.apache.org/zh-CN/docs/dev/lakehouse/multi-catalog/es
-
优化 Iceberg V2 表有大量删除行诗时的读取性能。
-
支持读取 Schema Evolution 后 Iceberg 表。
-
Parquet Reader 正确处理列名大小写。
其他
-
支持访问 Hadoop KMS 加密的 HDFS 。
-
支持取消正在执行的导出任务。参考文档:https://doris.apache.org/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/CANCEL-EXPORT
-
将
explode_split
函数执行效率优化 1 倍。 -
将 nullable 列的读取性能优化 3 倍。
-
优化 Memtracker 的部分问题,提高内存管理精度,优化内存应用。
BugFix
-
修复了使用 Doris-Flink-Connectore 导入数据时的内存泄漏问题;#16430
-
修复了 BE 可能的线程调度问题,并减少了 BE 线程耗尽导致的 Fragment_sent_timeout。
-
修复了 datetimev2/decivalv3 的部分正确性和精度问题。
-
修复了 Light Schema Change 功能的各种已知问题。
-
修复了 bitmap 类型 Runtime Filter 的各种数据正确性问题。
-
修复了 1.2.1 版本中引入的 CSV 读取性能差的问题。
-
修复了 Spark Load 数据下载阶段导致的 BE OOM 问题。
-
修复了从 1.1.x 版升级到 1.2.x 版时可能出现的元数据兼容性问题。
-
修复了创建 JDBC Catalog 时的元数据问题。
-
修复了由于导入操作导致的 CPU 使用率高的问题。
-
修复了大量失败 Broker Load 作业导致的 FE OOM 问题。
-
修复了加载浮点类型时精度丢失的问题。
-
修复了 Stream Load 使用两阶段提交时出现的内存泄漏问题。
其他
添加指标以查看 BE 上的 Rowset 和 Segment 总数量 doris_be_all_rowset_nums
和 doris_be_all_segment_nums