doris问题总结(持续更新)
2024-07-23 10:14:48 # doris # 问题总结

doris问题总结(持续更新)

doris特性

  1. MPP架构
  2. 支持标准化sql
  3. 向量化执行器
  4. 聚合表
  5. 支持rollup

doris和clickhouse区别

doris:

  • 使用更加简单,sql标准支持更好,join更好
  • 运维更简单,故障节点自动恢复
  • 分布式更强,多种聚合模型
  • 支持多种导入方式
  • doris的导入都是事务的,要不都成功要不都失败

clickhouse:

  • 性能更好,导入性能和单表查询性能更好
  • 功能支持多种表引擎,和各种函数的优化
  • 集群管理工具更多
  • clickhouse不支持事务

业务场景复杂,数据量大,肯定是clickhouse;希望直接分析解决方案,肯定是doris

doris返回值问题

doris删除操作返回值中的删除影响的行是恒定为0的,因为doris目前的删除的逻辑删除,所以影响的行数一直是0
alt text

alt text

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;