大数据分析——Apache Doris(二十九)

503 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第11天,点击查看活动详情

 高级设置*

 增大内存*

内存不够时, 查询可能会出现‘Memory limit exceeded’, 这是因为doris对每个用户默认设置内存限制为 2g

SHOW VARIABLES LIKE "%mem_limit%" ;
exec_mem_limit 的单位是 byte,可以通过 SET 命令改变 exec_mem_limit 的值。如改为 8GB。
SET exec_mem_limit = 8589934592 ;
上述设置仅仅在当前session有效, 如果想永久有效, 需要添加 global 参数
SET GLOBAL exec_mem_limit = 8589934592 ;

 修改超时时间

doris默认最长查询时间为300s, 如果仍然未完成, 会被cancel掉

SHOW VARIABLES LIKE "%query_timeout%" ;
可以修改为60s
SET query_timeout = 60 ;
同样, 如果需要全局生效需要添加参数 global
set global query_timeout = 60 ;

 doris的高可用方案

当部署多个 FE 节点时,用户可以在多个fe上部署负载均衡实现或者通过mysql connect 自动重连

jdbc : mysql ://[ host : port ],[ host : port ].../[ database ][? propertyName1 **][=**propertyValue1 ][& propertyName2 ][=propertyValue2 ]...

或者应用可以连接到和应用部署到同一机器上的 MySQL Proxy,通过配置 MySQL Proxy 的 Failover 和 Load Balance 功能来达到目的。

 数据模型

在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。一张表包括行(Row)列(Column) 。Row即用户的一行数据。Column 用于描述一行数据中不同的字段。

Column可以分为两大类:Key(维度列)和Value(指标列)

Doris 的数据模型主要分为3类:

  • Aggregate

  • Uniq

  • Duplicate

 Aggregate模型(聚合模型)

这是一个典型的用户信息和访问行为的事实表。 在一般星型模型中,用户信息和访问行为一般分别存放在维度表和事实表中。这里我们为了更加方便的解释 Doris 的数据模型,将两部分信息统一存放在一张表中。

表中的列按照是否设置了 AggregationType,分为 Key (维度列)  和 Value(指标列) 。没有设置 AggregationType 的,如 user_id、date、age … 等称为 Key,而设置了 AggregationType 的称为 Value。

当我们导入数据时,对于 Key 列相同的行和聚合成一行,而 Value 列会按照设置的 AggregationType 进行聚合。 AggregationType 目前有以下四种聚合方式:

  • SUM:求和,多行的 Value 进行累加。

  • REPLACE:替代,下一批数据中的 Value 会替换之前导入过的行中的 Value。

  • MAX:保留最大值。

  • MIN:保留最小值。

假设我们有以下导入数据(原始数据):