一种数据仓库构建方法、系统、计算机设备及存储介质技术方案

技术编号:28373503 阅读:30 留言:0更新日期:2021-05-08 00:00
本发明专利技术公开了一种数据仓库构建方法、系统、计算机设备及存储介质,涉及数据分析系统领域,包括Flink应用、更新数据装置、Clickhouse、存储单元以及Sink,Flink应用程序消费kafka数据,并实时计算环节,聚合窗口,将窗口内多行行为数据转为一行多列,得到字段并存入存储单元的维表,维表关联更新数据装置,反复获取维表字段,数据经过Sink输出,写入Clickhouse中,本发明专利技术维表关联性能大幅度提升,由小时级别到秒级别,并且支持海量数据的正常写入。

【技术实现步骤摘要】
一种数据仓库构建方法、系统、计算机设备及存储介质
本专利技术涉及数据分析系统领域,具体来说,涉及一种数据仓库构建方法、系统、计算机设备及存储介质。
技术介绍
近这些年,产业界纷纷向数字驱动转型,在这样一个用数据说话的时代,数据在很大程度上影响着企业的业务和领导层决策。而从数据驱动的方面考虑,实时数据分析系统的重要性也不言而喻。但是当数据量巨大的情况下,企业对数据技术也提出了更高的要求,但是要实现极低延迟的实时计算和亚秒级的多维实时查询还是有难度的。Clickhouse是Yandex.Metrica世界第二大Web分析平台而开发的。它是一款用于大数据实时分析的列式数据库管理系统,而非数据库。通过向量化执行以及对CPU底层指令集(SIMD)的使用,它可以对海量数据进行并行处理,从而加快数据的处理速度。目前为止,Clickhouse广泛运用在实时报表,在线实时分析,用户画像,智能推荐系统等场景。但是基于Clickhouse构建实时数据仓库方面也面临着一些问题需要解决:实时处理维表关联:实时关联性能很大程度决定数据是否延迟,在大数据量情况下每秒数百万数据的直接关联Hbase会导致小时级别的延迟;Clickhouse不支持高并发,高并发写入会极大增加集群压力,海量数据写入是一个问题。
技术实现思路
为了克服现有技术的不足,本专利技术的一种数据仓库构建方法、系统、计算机设备及存储介质,能够支持海量数据写入。本专利技术解决其技术问题所采用的技术方案是:一种数据仓库构建方法,其改进之处在于,包括Flink应用程序消费kafka数据,并实时计算环节,聚合窗口,将窗口内多行行为数据转为一行多列,得到字段并存入维表,维表关联有用于反复获取维表字段的更新数据装置,数据经过Sink输出,写入Clickhouse中。作为上述技术方案的进一步改进,更新数据装置包括Redis,用于反复获取维表字段。作为上述技术方案的进一步改进,更新数据装置包括SPAEK,用于按天更新Redis数据。作为上述技术方案的进一步改进,更新数据装置包括Hbase,用于查询维表字段。作为上述技术方案的进一步改进,数据采用Batch方式写入Clickhouse中。作为上述技术方案的进一步改进,数据采用Batch方式后,数据写入一个分片,再写入zookeeper中。一种数据仓库构建系统,其改进之处在于,包括Flink应用、更新数据装置、Clickhouse、存储单元以及Sink,Flink应用程序消费kafka数据,并实时计算环节,聚合窗口,将窗口内多行行为数据转为一行多列,得到字段并存入存储单元的维表,维表关联更新数据装置,反复获取维表字段,数据经过Sink输出,写入Clickhouse中。作为上述技术方案的进一步改进,更新数据装置包括Redis,用于反复获取维表字段。作为上述技术方案的进一步改进,更新数据装置包括SPAEK,用于按天更新Redis数据。作为上述技术方案的进一步改进,更新数据装置包括Hbase,用于查询维表字段。作为上述技术方案的进一步改进,数据采用Batch方式写入Clickhouse中。作为上述技术方案的进一步改进,数据采用Batch方式后,数据写入一个分片,再写入zookeeper中。一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法。一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行上述任一项所述方法的计算机程序。本专利技术的有益效果是:本专利技术维表关联性能大幅度提升,由小时级别到秒级别,并且支持海量数据的正常写入。附图说明图1为本专利技术的结构图。具体实施方式下面结合附图和实施例对本专利技术进一步说明。以下将结合实施例和附图对本专利技术的构思、具体结构及产生的技术效果进行清楚、完整地描述,以充分地理解本专利技术的目的、特征和效果。显然,所描述的实施例只是本专利技术的一部分实施例,而不是全部实施例,基于本专利技术的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本专利技术保护的范围。另外,专利中涉及到的所有联接/连接关系,并非单指构件直接相接,而是指可根据具体实施情况,通过添加或减少联接辅件,来组成更优的联接结构。本专利技术创造中的各个技术特征,在不互相矛盾冲突的前提下可以交互组合。参考图1,本专利技术揭示了一种数据仓库构建方法,包括Flink应用程序消费kafka数据,并实时计算环节,聚合窗口,将窗口内多行行为数据转为一行多列,得到字段并存入维表,数据经过Sink输出,写入Clickhouse中。由于客户端在做实时查询时,高频查询会给数据库带来巨大压力,在上述实施例中,本专利技术Flink应用程序消费kafka数据,并对时间在Flink实时计算环节,先按照1分钟进行了窗口聚合,将窗口内多行行为数据转一行多列的数据格式,在用户行为分析过程中我们可以根据用户将一分钟内的该用户数据有差异的行为聚合成多列,也就实现一个用户一分钟内只有一条数据,这就实现了多行转列。多行转列可以把多行数据转换为一行,针对单一业务主键(用户)只需要查询一次就可以,避免来回查询,可以极大缓解数据库压力。进一步的,维表关联有更新数据装置,用于反复获取维表字段。更新数据装置包括用于反复获取维表字段的Redis、用于按天更新Redis数据的SPAEK以及用于查询维表字段Hbase。在上述实施例中,将多行转列得到的数据如果需要反查获取维表字段,先访问redis如果redis中存在则直接获取,如果不存在则访问hbase;为保证能够使得热点数据落在redis中,Spark应用程序会按照一定规则比如按天更新redis数据,这样可以保证大部分查询落在redis上从而减缓hbase查询量,与此同时大大加快了查询速度。另外,数据采用Batch方式写入Clickhouse中。数据采用Batch方式后,数据写入一个分片,再写入zookeeper中。在上述实施例中,数据先后经过Flink、sink落地到Clickhouse中。海量数据直接写入Clickhouse的话,会导致zookeeper的每秒查询率太高,也就是QPS太高,解决方案是改用Batch方式写入。选用了大小一万的Batch。此外这里采取了Clickhouse官方的建议,借助zookeeper实现了高可用的方案。数据写入一个分片,仅写入一个副本,然后再写zookeeper,通过zookeeper告诉同一个分片的其他副本,其他副本再过来拉取数据。zookeeper更加轻量级,写的时候,任意写一个副本,其它副本都能够通过zookeeper获得一致的数据。此外,即便其它节点第一次来获取数据失败了,后面只要发现它跟zookeeper上记录的数据不一致,就会再666666次尝试获取数据,保证数据一致性。一种数据仓库构建系统,包括Flink应用、更本文档来自技高网...

【技术保护点】
1.一种数据仓库构建方法,其特征在于,包括Flink应用程序消费kafka数据,并实时计算环节,聚合窗口,将窗口内多行行为数据转为一行多列,得到字段并存入维表,维表关联有用于反复获取维表字段的更新数据装置,数据经过Sink输出,写入Clickhouse中。/n

【技术特征摘要】
1.一种数据仓库构建方法,其特征在于,包括Flink应用程序消费kafka数据,并实时计算环节,聚合窗口,将窗口内多行行为数据转为一行多列,得到字段并存入维表,维表关联有用于反复获取维表字段的更新数据装置,数据经过Sink输出,写入Clickhouse中。


2.根据权利要求1所述的一种数据仓库构建方法,其特征在于,更新数据装置包括Redis,用于反复获取维表字段。


3.根据权利要求2所述的一种数据仓库构建方法,其特征在于,更新数据装置包括SPAEK,用于按天更新Redis数据。


4.根据权利要求3所述的一种数据仓库构建方法,其特征在于,更新数据装置包括Hbase,用于查询维表字段。


5.根据权利要求1所述的一种数据仓库构建方法,其特征在于,数据采用Batch方式写入Clickhouse中。


6.根据权利要求5所述的一种数据仓库构建方法,其特征在于,数据采用Batch方式后,数据写入一个分片,再写入zookeeper中。


7.一种数据仓库构建系统,其特征在于,包括Flink应用、更新数据装置、Clickhouse、存储单元以及Sink,Flink应用程序消费kafka数据,并实时计算环节,聚合窗口,将窗口内多行行...

【专利技术属性】
技术研发人员:周小润刘跃红管正爽
申请(专利权)人:银盛支付服务股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1