
欢迎查阅本周的 Apache Doris 社区 FAQ 栏目!
在这个栏目中,每周将筛选社区反馈的热门问题和话题,重点回答并进行深入探讨。旨在为广大用户和开发者分享有关 Apache Doris 的常见问题。
通过这个每周 FAQ 栏目,希望帮助社区小伙伴更好地了解和应用 Apache Doris,促进经验交流和技术共享。
Q1 doris查询时报:
errCode = 2, detailMessage = Nereids cost too much time ( > 5s )
A1 通常可以调大如下参数解决:
set global nereids_timeout_second = 30;
Q2 doris 外部表和内部表固定sql如何通过cache提高重复查询效率?A2 Doris 自己管理的 Cache 目前均为 LRU 淘汰策略,均支持单独通过参数控制容量和淘汰时长。 Data Cache 默认关闭,需要在 FE 和 BE 中设置相关参数进行开启。Data Cache 功能仅作用于针对文件的外表查询(如 Hive、Hudi )。对内表查询,或非文件的外表查询(如 JDBC、Elasticsearch)等无影响。 -- 单个会话中开启 Data Cache
SET enable_file_cache = true;
-- 全局开启 Data Cache
SET GLOBAL enable_file_cache = true;
在2.1.3及以上版本,Nereids优化器在fe的内存中保存缓存的关键信息,比如非确定函数及其评估值,在关键信息未发生变化时可以跳过sql解析,优化了sql cache的查询速度。 # 确保 fe.conf 的cache_enable_sql_mode=true(默认是 true)
vim fe/conf/fe.conf
cache_enable_sql_mode=true
-- 在 MySQL 命令行中设置变量
set [global] enable_sql_cache=true; doris cache
https://doris.apache.org/zh-CN/docs/dev/admin-manual/memory-management/memory-analysis/doris-cache-memory-analysis/Q3 doris中针对非主键又是不等连接的字段,有什么适合的索引?场景是创建时间加不到主键去A3 原则上不等连接性能较差,2.1的版本社区加上了不等连接的rf,会有一定优化。 这种场景建议从连接字段上分析一下有没有改进的空间,比如字符串变int 或 null变not null。[S1000]: Packet for query is too large
(2,734,157 > 1,048,576).
You can change this value on the server by
setting the 'max_allowed_packet' variable.
A4 如下:
-- 全局调大相关参数
set global max_allowed_packet = 104857600;
-- 查看相关参数修改后的值
show variables like '%max_allowed_packet%'
Q5 doris升级后,查询结果是对的,插入目标表后就会出现空值?
A5 通常原因是升级后此变量为false,致insert into select没有走pipeline引擎: -- 开启
set global enable_nereids_dml_with_pipeline = true;
Q6 flink-doris-connector 是否兼容flink 1.20
flink-doris-connector内容可查阅:https://doris.apache.org/zh-CN/docs/dev/ecosystem/flink-doris-connector/Q7 doris 2.1.3版本使用回写hive的功能时报:
Failed to execute CTAS Reason:
errCode = 2, detailMessage = Unknown engine name: hive
A7 使用hive回写功能时,需要注意几个点:
-- 1. 开启全局新优化器
set global enable_nereids_planner = true
-- 2. 关闭回退
set global enable_fallback_to_original_planner=false
一些从老版本升级上来的集群,上述参数的默认值可能还是老的,所以需要手动调整。另外,建议升级至>= 2.1.5 的稳定版本。
Q8 doris 弹性计算节点CN,如果sql是外部表和内部表关联时,是如何查询的(外部表在什么节点查,内部表在什么节点查,中间聚合又在什么节点执行)?A8 能利用到的节点,是 内表能用的节点,和外表能用的节点的合集。CN弹性计算节点内容可查阅: https://doris.apache.org/zh-CN/docs/dev/lakehouse/compute-nodeQ9 一共只有96G内存,doris是分成3个32G内存的节点快,还是只有一个96G的节点快?
单个大内存节点可以避免数据在多个节点之间的传输开销,特别是对于一些需要大量内存进行复杂计算的任务。此外,管理一个节点相对来说比管理多个节点更加简单。Q10 doris是否有集群规模对应能支持多少数据量查询的压测数据?
可以先参考1C : 4G Mem,1C : 50G 数据的常规模式来估算;例如 20T(密集型热数据/非全量数据) * 1024 = 20480G 50 ≈ 409C,目前这个规模的计算存储节点预估 64C * 6 = 384C;硬盘建议最好是SSD的,be属于计算密集型的组件,iops要求较高。 实际的集群规模,与业务相关度特别高,比如是日志类数据,是一些报表数据之类的,还是查询是多表关联居多,还是单表的?这个对于扫描量而言差距都较大;又比如假设数据是按天级存储的,虽然有一个T,但可能是存了一年的,那每天可能就3个G,其实如果按天去查询的话,扫描量就很小。所以,需要根据业务数据进行压测评估,通常和场景并发及数据需求计算复杂度有关。

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。
如果您对 Apache Doris 感兴趣,可以通过以下入口访问官方网站、社区论坛、GitHub和dev邮件组:💡官网文档:https://doris.apache.org 💡社区论坛:https://ask.selectdb.com 💡GitHub:https://github.com/apache/doris 💡dev邮件组:dev@doris.apache.org非常欢迎您在社区论坛中与其他用户分享您的使用经验和技巧,或者向dev邮件组提交反馈和意见。相信,您的参与将帮助Apache Doris变得更加完善。▼ 点击阅读原文,发现更多精彩!