doris问题总结(持续更新)
doris特性
- MPP架构
- 支持标准化sql
- 向量化执行器
- 聚合表
- 支持rollup
doris和clickhouse区别
doris:
- 使用更加简单,sql标准支持更好,join更好
- 运维更简单,故障节点自动恢复
- 分布式更强,多种聚合模型
- 支持多种导入方式
- doris的导入都是事务的,要不都成功要不都失败
clickhouse:
- 性能更好,导入性能和单表查询性能更好
- 功能支持多种表引擎,和各种函数的优化
- 集群管理工具更多
- clickhouse不支持事务
业务场景复杂,数据量大,肯定是clickhouse;希望直接分析解决方案,肯定是doris
doris返回值问题
doris删除操作返回值中的删除影响的行是恒定为0的,因为doris目前的删除的逻辑删除,所以影响的行数一直是0
![alt text](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48Y2lyY2xlIGN4PSI0IiBjeT0iMTIiIHI9IjMiIGZpbGw9ImN1cnJlbnRDb2xvciI+PGFuaW1hdGUgaWQ9InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAiIGF0dHJpYnV0ZU5hbWU9InIiIGJlZ2luPSIwO3N2Z1NwaW5uZXJzM0RvdHNTY2FsZTEuZW5kLTAuMjVzIiBkdXI9IjAuNzVzIiB2YWx1ZXM9IjM7LjI7MyIvPjwvY2lyY2xlPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMiIGZpbGw9ImN1cnJlbnRDb2xvciI+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iciIgYmVnaW49InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAuZW5kLTAuNnMiIGR1cj0iMC43NXMiIHZhbHVlcz0iMzsuMjszIi8+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMjAiIGN5PSIxMiIgcj0iMyIgZmlsbD0iY3VycmVudENvbG9yIj48YW5pbWF0ZSBpZD0ic3ZnU3Bpbm5lcnMzRG90c1NjYWxlMSIgYXR0cmlidXRlTmFtZT0iciIgYmVnaW49InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAuZW5kLTAuNDVzIiBkdXI9IjAuNzVzIiB2YWx1ZXM9IjM7LjI7MyIvPjwvY2lyY2xlPjwvc3ZnPg==)
![alt text](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48Y2lyY2xlIGN4PSI0IiBjeT0iMTIiIHI9IjMiIGZpbGw9ImN1cnJlbnRDb2xvciI+PGFuaW1hdGUgaWQ9InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAiIGF0dHJpYnV0ZU5hbWU9InIiIGJlZ2luPSIwO3N2Z1NwaW5uZXJzM0RvdHNTY2FsZTEuZW5kLTAuMjVzIiBkdXI9IjAuNzVzIiB2YWx1ZXM9IjM7LjI7MyIvPjwvY2lyY2xlPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjMiIGZpbGw9ImN1cnJlbnRDb2xvciI+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iciIgYmVnaW49InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAuZW5kLTAuNnMiIGR1cj0iMC43NXMiIHZhbHVlcz0iMzsuMjszIi8+PC9jaXJjbGU+PGNpcmNsZSBjeD0iMjAiIGN5PSIxMiIgcj0iMyIgZmlsbD0iY3VycmVudENvbG9yIj48YW5pbWF0ZSBpZD0ic3ZnU3Bpbm5lcnMzRG90c1NjYWxlMSIgYXR0cmlidXRlTmFtZT0iciIgYmVnaW49InN2Z1NwaW5uZXJzM0RvdHNTY2FsZTAuZW5kLTAuNDVzIiBkdXI9IjAuNzVzIiB2YWx1ZXM9IjM7LjI7MyIvPjwvY2lyY2xlPjwvc3ZnPg==)
doris AGGREGATE KEY不支持复杂类型的REPLACE聚合
比如我们要运行:
1 2 3 4 5 6 7 8 9 10 11
| CREATE TABLE task_keyword_info ( task_id INT COMMENT '关联task_info中id', task_type INT COMMENT '1:关键词, 2:用户', task VARCHAR(500) COMMENT '当task_type=1时,为关键词, 当task_type=2时,为用户id/链接', link_id VARCHAR(500) COMMENT '日志链路ID, 随机的UUID', crawler_type ARRAY<INT> REPLACE COMMENT '需要采集的类型,程序接收任务是否采集,根据类型判断。如:1代表微博,当微博接收到crawler_type=1的任务时运行,接收其他类型任务不运行。', count INT REPLACE_IF_NOT_NULL COMMENT '固定值1便于count' ) ENGINE=OLAP AGGREGATE KEY(task_id, task_type, task, link_id) DISTRIBUTED BY HASH(task_id) BUCKETS 10;
|
这种sql的时候会报错
1
| 1105 - errCode = 2, detailMessage = Aggregate table can't support replace array/map/struct value now
|
在Doris中,AGGREGATE KEY表不支持对复杂类型(如数组、映射或结构)的REPLACE聚合操作。这是因为Doris的AGGREGATE KEY表在设计上主要用于支持基础类型(如整数、浮点数、字符串等)的聚合操作,如SUM、MIN、MAX、REPLACE等。
这里我们可以使用UNIQUE_KEYS来代替AGGREGATE KEY
1 2 3 4 5 6 7 8 9 10
| CREATE TABLE task_keyword_info ( task_id INT COMMENT '关联task_info中id', task_type INT COMMENT '1:关键词, 2:用户', task VARCHAR(500) COMMENT '当task_type=1时,为关键词, 当task_type=2时,为用户id/链接', link_id VARCHAR(500) COMMENT '日志链路ID, 随机的UUID', crawler_type ARRAY<INT> COMMENT '需要采集的类型,程序接收任务是否采集,根据类型判断。如:1代表微博,当微博接收到crawler_type=1的任务时运行,接收其他类型任务不运行。', count INT COMMENT '固定值1便于count' ) ENGINE=OLAP UNIQUE KEY(task_id, task_type, task, link_id) DISTRIBUTED BY HASH(task_id) BUCKETS 10;
|