检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
设计DAG 操作场景 合理的设计程序结构,可以优化执行效率。在程序编写过程中要尽量减少shuffle操作,合并窄依赖操作。 操作步骤 以“同行车判断”例子讲解DAG设计的思路。 数据格式:通过收费站时间、车牌号、收费站编号...... 逻辑:以下两种情况下判定这两辆车是同行车 如果两辆车都通过相同序列的收费站,
_{type}_mv后缀。 物化视图、聚合表保持与明细表同样的分区类型及ttl时间。 物化视图中的group by字段名称与明细表对应字段名称一致;select子句返回列名称与聚合表中列的名称保持一致。 物化视图创建时不会进行语法校验,只有发生实际数据插入与查询时才会出错。 物化视图上线前,需做好充分验证。
ClickHouse索引设计 一级索引设计 在建表设计时指定主键字段的建议:按查询时最常使用且过滤性最高的字段作为主键。依次按照访问频度从高到低、维度基数从小到大来排列。数据是按照主键排序存储的,查询的时候,通过主键可以快速筛选数据,合理的主键设计,能够大大减少读取的数据量,提升
ClickHouse分区设计 合理设置分区键,控制分区数在一千以内,分区字段使用整型。 分区part数与查询性能关系 图1 分区part数与查询性能关系图 分区建议 建议使用toYYYYMMDD(pt_d)作为分区键,pt_d是date类型。 如果业务场景需要做小时分区,使用pt
Spark DAG设计规范说明 操作场景 合理的设计程序结构,可以优化执行效率。在程序编写过程中要尽量减少shuffle操作,合并窄依赖操作。 操作步骤 以“同行车判断”例子讲解DAG设计的思路。 数据格式:通过收费站时间、车牌号、收费站编号...... 逻辑:以下两种情况下判定这两辆车是同行车:
Hudi表模型设计规范 规则 Hudi表必须设置合理的主键。 Hudi表提供了数据更新和幂等写入能力,该能力要求Hudi表必须设置主键,主键设置不合理会导致数据重复。主键可以为单一主键也可以为复合主键,两种主键类型均要求主键不能有null值和空值,可以参考以下示例设置主键: SparkSQL:
ClickHouse物化视图设计 ClickHouse物化视图概述 ClickHouse普通物化视图设计 ClickHouse Projection设计 父主题: ClickHouse应用开发规范
Hudi表分区设计规范 规则 分区键不可以被更新: Hudi具有主键唯一性机制,但在分区表的场景下通常只能保证分区内主键唯一,因此如果分区键的值发生变更后,会导致相同主键的行记录出现多条的情况。在以日期分区的场景,可采用数据的创建时间为分区字段,切记不要采用数据更新时间做分区。
Spark DAG设计规范说明 操作场景 合理的设计程序结构,可以优化执行效率。在程序编写过程中要尽量减少shuffle操作,合并窄依赖操作。 操作步骤 以“同行车判断”例子讲解DAG设计的思路。 数据格式:通过收费站时间、车牌号、收费站编号...... 逻辑:以下两种情况下判定这两辆车是同行车:
ClickHouse宽表设计原则 宽表设计原则 由于ClickHouse的宽表查询性能较优,且当前ClickHouse可支持上万列的宽表横向扩展。 在大部分场景下,有大表两表join以及多表join的场景,且多个join的表数据变化更新频率较低,这种情况,建议对多个表join查询
Hudi表索引设计规范 规则 禁止修改表索引类型。 Hudi表的索引会决定数据存储方式,随意修改索引类型会导致表中已有的存量数据与新增数据之间出现数据重复和数据准确性问题。常见的索引类型如下: 布隆索引:Spark引擎独有索引,采用bloomfiter机制,将布隆索引内容写入到Parquet文件的footer中。
ClickHouse宽表设计 ClickHouse宽表设计原则 ClickHouse表字段设计 ClickHouse本地表设计 ClickHouse分布式表设计 ClickHouse分区设计 ClickHouse索引设计 父主题: ClickHouse应用开发规范
ClickHouse本地表设计 规则 单表(分布式表)的记录数不要超过万亿,对于万亿以上表的查询,性能较差,且集群维护难度变大。单表(本地表)不超过百亿。 表的设计都要考虑到数据的生命周期管理,需要进行TTL表属性设置或定期老化清理表分区数据。 单表的字段建议不要超过5000列。
ClickHouse分布式表设计 建议 分布式表建表参考: CREATE TABLE default.my_table_dis ON CLUSTER default_cluster AS mybase.my_table_local ENGINE = Distributed(default_cluster
ClickHouse DataBase设计 业务隔离设计-各业务分库设计 在业务规划时,不同业务归属于不同数据库,便于后续对应用户关联的数据库下表、视图等数据库对象权限的分离管理和维护。 业务隔离设计-不要在system库中创建业务表 system数据库是ClickHouse默认
务,释放数据更大的价值。 表1 ClickHouse设计规范说明 项目 描述 数据库规划 集群业务规划、容量规划、数据分布。 数据库设计 Database设计、宽表设计、分布式表设计、本地表设计、分区设计、索引设计、物化视图设计。 数据库开发 简单查询、聚合查询、join查询、数据增/删/改等SQL开发。
ClickHouse数据分布设计 Shard和副本概念介绍 图1 ClickHouse集群架构图 从横向来看ClickHouse数据库集群,所有数据都会平均分布到多个shard分片中进行保存,数据平均分布后,保证了查询的高度并行性,以提升数据的查询性能。 从纵向来看,每个shar
ClickHouse依赖服务设计 为了保证ClickHouse服务的稳定,需要提早规划好对于底层依赖服务的设计,主要是ZooKeeper,尤其是在使用replicated*系列表引擎的场景下。 ZooKeeper默认部署在MRS集群的Master节点,根据节点CPU和内存规格,调
ClickHouse Projection设计 Projection仅在MRS 3.2.0及以上的版本集群中支持。 projection定义 CREATE TABLE test_projection_table( level String, type String
ClickHouse表字段设计 规则 不允许用字符类型存放时间或日期类数据,尤其是需要对该日期字段进行运算或者比较的时候。 不允许用字符类型存放数值类型的数据,尤其是需要对该数值字段进行运算或者比较的时候。字符串的过滤效率相对于整型或者特定时间类型有下降。 建议 不建议表中存储过