CN115599871A - 基于湖仓一体的数据处理系统和方法 - Google Patents
基于湖仓一体的数据处理系统和方法 Download PDFInfo
- Publication number
- CN115599871A CN115599871A CN202211283718.7A CN202211283718A CN115599871A CN 115599871 A CN115599871 A CN 115599871A CN 202211283718 A CN202211283718 A CN 202211283718A CN 115599871 A CN115599871 A CN 115599871A
- Authority
- CN
- China
- Prior art keywords
- data
- layer
- hudi
- minute
- storing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2372—Updates performed during offline database operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/26—Visual data mining; Browsing structured data
Abstract
本申请提供了一种基于湖仓一体的数据处理系统,所述系统包括:ODS层,用于从第一数据源获取日志数据;基于HUDI的分钟级DWD层,用于存储第一数据,所述第一数据基于所述日志数据的增量计算得到;基于HUDI的分钟级DWS层,用于存储第二数据,所述第二数据基于所述第一数据的增量计算得到;基于HUDI的分钟级ADS层,用于存储第三数据,所述第三数据基于所述第二数据的增量计算得到。本申请还提供了基于湖仓一体的数据处理方法、装置、计算机设备及计算机可读存储介质。本申请的技术方案能够降低传输资源,减少计算资源消耗。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于湖仓一体的数据处理方法、装置、计算机设备及计算机可读存储介质,以及一种基于湖仓一体的数据处理系统。
背景技术
数据分为实时数据和离线数据。通常情况下,针对离线场景和实时场景分别需要进行离线处理和在线处理。如,基于离线链路将离线数据传输到离线数据仓库中,将离线数据的计算结果存储到MySQL数据库中,基于实时链路通过kafka将实时数据传输到实时数据仓库中,将在实时数据的计算结果存储到MySQL数据库中。然而,本发明人发现上述数据的存储和处理,非常消耗传输资源和计算资源。
发明内容
本申请的目的是提供一种基于湖仓一体的数据处理系统、方法、装置、计算机设备及计算机可读存储介质,以解决上述非常消耗传输资源和计算资源的问题。
本申请实施例的一个方面提供了一种基于湖仓一体的数据处理系统,所述系统包括:
ODS层,用于从第一数据源获取日志数据;
基于HUDI的分钟级DWD层,用于存储第一数据,所述第一数据基于所述日志数据的增量计算得到;
基于HUDI的分钟级DWS层,用于存储第二数据,所述第二数据基于所述第一数据的增量计算得到;
基于HUDI的分钟级ADS层,用于存储第三数据,所述第三数据基于所述第二数据的增量计算得到。
可选地,所述系统还包括:
基于HUDI的DIM层,用于从第二数据源获取数据库的增量数据;
其中,所述增量数据用于:和所述第一数据进行拼接,或者和所述第二数据进行拼接,从而同步到所述基于HUDI的分钟级DWD层或基于HUDI的分钟级DWS层。
可选地,所述基于HUDI的DIM层连接离线链路;
在所述增量数据存储到所述基于HUDI的DIM层,基于业务标识触发离线存储操作;
所述离线存储操作用于:通过DIM层将所述增量数据中的至少部分数据传输到所述离线链路中。
可选地,所述基于HUDI的分钟级DWD层连接离线链路;
在所述第一数据存储完成的情形下,基于业务标识触发离线存储操作;
所述离线存储操作用于:将所述第一数据中的至少部分数据传输到所述离线链路中。
可选地,所述系统还包括:
基于HIVE的DWD层,设置在所述ODS层和所述基于HUDI的分钟级DWD层之间;
其中,所述基于HIVE的DWD层,用于:对所述日志数据进行计算,将计算的结果进行存储;该计算的结果经过增量计算后存储在基于HUDI的分钟级DWD层。
可选地,增量计算均采用Fink引擎执行。
本申请实施例的又一个方面提供了一种基于湖仓一体的数据处理方法,所述方法包括:
从第一数据源获取日志数据;
对所述日志数据进行增量计算以得到第一数据,将第一数据存储在基于HUDI的分钟级DWD层;
对所述第一数据进行增量计算以得到第二数据,将第二数据存储在基于HUDI的分钟级DWS层;
对所述第二数据进行增量计算以得到第三数据,将第三数据存储在基于HUDI的分钟级ADS层。
可选地,所述方法还包括:
从第二数据源获取数据库的增量数据,并将所述增量数据写入到基于HUDI的DIM层;
所述增量数据用于:和所述第一数据进行拼接,或者和所述第二数据进行拼接,从而同步到所述基于HUDI的分钟级DWD层或所述基于HUDI的分钟级DWS层。
本申请实施例的又一个方面提供了一种基于湖仓一体的数据处理装置,所述装置包括:
获取模块,用于从第一数据源获取日志数据;
第一计算模块,用于对所述日志数据进行增量计算以得到第一数据,将第一数据存储在基于HUDI的分钟级DWD层;
第二计算模块,用于对所述第一数据进行增量计算以得到第二数据,将第二数据存储在基于HUDI的分钟级DWS层;
第三计算模块,用于对所述第二数据进行增量计算以得到第三数据,将第三数据存储在基于HUDI的分钟级ADS层。
本申请实施例的又一个方面提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时用于如上所述的基于湖仓一体的数据处理方法的步骤。
本申请实施例的又一个方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行如上所述的基于湖仓一体的数据处理方法的步骤。
本申请实施例提供的基于湖仓一体的数据处理方法、装置、计算机设备及计算机可读存储介质,以及基于湖仓一体的数据处理系统,至少包括以下技术优势:
第一:降低传输资源,减少Kafka的使用。
通过增量计算将数据写入HUDI中,而不需要传统实时链路中的Kafka,有效降低传输资源。
第二:计算资源消耗少。
相对于数据需要在离线链路和实时链路上各计算一次,本实施例可以将数据离线数据和实时数据统一在基于HUDI的数仓计算,仅需要计算一次,因此计算资源消耗少。
附图说明
图1示意性示出了根据本申请实施例的环境示意图;
图2示意性示出了根据本申请实施例一的基于湖仓一体的数据处理系统的架构图;
图3示意性示出了根据本申请实施例二的基于湖仓一体的数据处理方法的流程图;
图4示意性示出了根据本申请实施例三的基于湖仓一体的数据处理装置的框图;以及
图5示意性示出了根据本申请实施例四的适于实现基于湖仓一体的数据处理方法的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
以下为本申请涉及到的一些术语解释:
Flink,属于分布式实时计算系统,用于对无界和有界数据流进行有状态(state)计算。Flink设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。其中,state一般指一个具体的任务(task)/算子(operator)的状态。
MySQL数据库,是一种基于关系型数据库管理系统的数据库。
物化视图(Projection),指从底层存储中获取数据的时候进行的投影操作。物化视图是查询优化的重要手段,其主要通过避免重复计算来优化查询速度。物化视图的原理是将中间查询的结果存储到磁盘上,在遇到相关的查询时可以避免重复计算而直接调用存储结果,通过数据库物化可以减少对底层存储的访问,加快访问速率。
HDFS(Hadoop Distributed File System),为Hadoop分布式文件系统。
流处理,用于处理(如计算、查询)流数据。流数据通常为在线数据,无边界性。
批处理,用于处理批数据(大容量静态数据集)。批数据通常为离线数据,以batch为计量单位。
流批一体,既能做流处理又能做批处理。
SQL(Structured Query Language)是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。SQL语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,SQL可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。
Kafka,是分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统,也可以作为消息队列系统。Kafka可以用于Web/Nginx日志、访问日志,消息服务等。Kafka是按秒进行任务的计算和应用,用于实时推荐、实时计算等场景中。
HUDI(Hadoop Updates and Incrementals,Hadoop更新与增量),采用并管理通过DFS(HDFS或云存储)存储大型分析数据集,支持在当前数据表中进行更新操作。Hudi将表组织成HDFS上某个指定目录(basepath)下的目录结构,表被分成多个分区,分区是以目录的形式存在,每个目录下面会存在属于该分区的多个文件,类似Hive表,每个Hudi表分区通过一个分区路径(Partition Path)来唯一标识。
Binlog日志,是记录所有数据库表结构变更(如CREATE、ALTER TABLE)及表数据修改(INSERT、UPDATE、DELETE)的二进制日志。Binlog日志的格式为JSON。
ODS(Operation Data Store)层,为操作数据存储层(也可作为数据湖),用于存放原始数据,如Binlog日志、数据。ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就经过ETL处理之后,装入本ODS层。
DIM(Dimension)层,为维表层,主要包含两部分数据:①高基数维度数据,如用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。②低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。
DW(Data Warehouse)层,为数据仓库层,可以从ODS层获取数据并按照主题建立各种数据模型,方便数据分析。其中,DW可以包括DWD层(Data Warehouse Detail,明细数据层)、DWS层(Data Warehouse Service,服务数据层)和DWT层(Data Warehouse Topic,数据主题层)。分钟级数仓(数据仓库),是指代按具体的分钟间隔时间作为微批粒度的数据同步,可以适用于高频查询场景等。
ADS(Application Data Store)层,为应用数据存储层。
数据湖(Data Lake),是一个以原始格式存储数据的存储库或系统,如基于HUDI的数据湖。数据湖,允许以任意规模存储所有结构化和非结构化数据。可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析—从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。
湖仓一体(Lake House),提供一个统一的、可共享的数据底座,避免传统的数据湖、数据仓库之间的数据移动,将原始数据、加工清洗数据、模型化数据,共同存储于一体化的“湖仓”中,既能面向业务实现高并发、精准化、高性能的历史数据、实时数据的查询服务,又能承载分析报表、批处理、数据挖掘等分析型业务。
Lambda架构,由Storm的作者Nathan Marz提出的实时大数据处理框架。Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop、Kafka、Storm、Spark、Hbase等各类大数据组件。
水印(watermark),是Flink为处理EventTime窗口计算提出的一种机制,本质上是一种时间戳。
Canal,是阿里巴巴集团提供的一个开源工具。Canal可以基于MySQL数据库增量日志解析,提供增量数据订阅和消费,以将增量数据写入到其他的存储应用。
CDC(CHANGE DATA CAPTURE,数据实时捕获与传输):用于确定和跟踪已变更的数据,以便可以对更改后的数据采取措施,如捕获MySQL变更的记录,然后导入数据湖。
为了方便本领域技术人员理解本申请实施例提供的技术方案,下面对相关技术进行说明:
数据分为实时数据和离线数据。通常情况下,针对离线场景和实时场景分别拉起一个离线链路和一个实时链路。基于离线链路将离线数据传输到离线数据仓库中,将离线数据的计算结果存储到MySQL数据库中,基于实时链路通过Kafka将实时数据传输到实时数据仓库中,将在实时数据的计算结果存储到MySQL数据库中。
然而,本发明人发现上述数据的存储和处理,有以下问题:
第一:非常消耗传输资源,如需要使用过多的Kafka;
第二:需要对离线数据和实时数据分别计算,从而需要过多计算资源;
第三:由于计算的结果要存储到MySQL数据库中,从而出现了移仓的问题,难于管理;
第四:由于计算的结果要存储到MySQL数据库中,从历史某个时间点重启无法拿到历史数据;
第五:天级别和分钟级别的实现,分别采用了两套代码,从而导致用户体验不一致。
有鉴于此,本申请提出了基于流批一体和湖仓一体的数据处理方案。
下面提供本申请的示例性应用环境。图1示意性示出了根据本申请实施例的环境应用示意图。
服务平台2,内置有基于湖仓一体的数据处理系统10,可以提供离线/实时数据的存储和计算,及提供数据查询等服务,其可以是单个服务器、服务器集群或云计算服务中心。
终端4,可以被配置发送查询请求等。终端可以是任意类型的计算设备,诸如智能手机、平板设备、膝上型计算机、智能电视、车载终端等。终端和服务平台2可以通过网络连接。网络可以包括各种网络设备,例如路由器、交换机、多路复用器、集线器、调制解调器、网桥、中继器、防火墙和/或代理设备等。网络可以包括物理链路,例如同轴电缆链路、双绞线电缆链路、光纤链路及其组合和/或类似物。网络可以包括无线链路,例如蜂窝链路、卫星链路、Wi-Fi链路和/或类似物。
需要说明的是,图1中的终端和服务器的数量仅是示意性的,不用于限制本申请的专利保护范围。
下面,将在上述示例性应用环境下提供若干个实施例,来说明基于湖仓一体的数据处理方案。
实施例一
图2示意性示出了根据本申请实施例一的基于湖仓一体的数据处理系统的架构图。所述基于湖仓一体的数据处理系统10可以包括ODS层100、基于HIVE的DWD层200(可选的)、基于HUDI的分钟级DWD层300、基于HUDI的分钟级DWS层400、基于HUDI的分钟级ADS层500、基于HUDI的DIM层600(可选的)。
(1)ODS层100。
ODS层100,用于从第一数据源获取日志数据。
所述日志数据可以离线日志,也可以是在线实时日志。
所述离线日志,可以是批数据,为离线存储在所述第一数据源的数据。
所述在线实时日志,可以通过埋点收集的移动终端实时产生的流式数据,或实时得到的其他数据。
作为示例,所述ODS层可以基于HIVE进行数据处理和存储。HIVE是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。此种设置方式,可以使得本数据湖可以有效对接传统数据集工具。
作为上述HIVE的发展和替换,所述ODS层可以是基于HUDI进行数据处理和存储。当上游节点为基于HUDI的数据源时,则可以采用基于HUDI的ODS层,增加实时性。
(2)基于HIVE的DWD层200(可选地)。
基于HIVE的DWD层200设置在所述ODS层和所述基于HUDI的分钟级DWD层之间。
其中,所述基于HIVE的DWD层200,用于:对所述日志数据进行计算,将计算的结果进行存储;该计算的结果经过增量计算后存储在基于HUDI的分钟级DWD层。
在本实施例中,所述基于HIVE的DWD层200可以增加对传统数据集工具的兼容性。
在本实施例中,通过Flink引擎对所述日志数据的计算(如ETL),以得到计算的结果。
作为进一步的发展和替换,所述基于HIVE的DWD层200可以被删除,从而实现基于HUDI的ODS层100和基于HUDI的DWD层的直接对接,进一步增加实时性。
(3)基于HUDI的分钟级DWD层300。
基于HUDI的分钟级DWD层300,用于存储第一数据,所述第一数据基于所述日志数据的增量计算得到。
可以基于Flink引擎对所述日志数据进行增量计算(去除空值,去除脏数据,去除超过极限范围的数据,行式存储改为列存储,改压缩格式、维度化、脱敏等),将增量计算得到实时结果实时更新到所述HUDI的分钟级DWD层300中。
(4)基于HUDI的分钟级DWS层400。
基于HUDI的分钟级DWS层400,用于存储第二数据,所述第二数据基于所述第一数据的增量计算得到。
基于HUDI的分钟级DWS层400:可以基于上层的应用和产品的指标需求,构建公共粒度的汇总指标表。以宽表化手段物理化模型,构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。在主题方面,可以面向业务过程,将业务活动事件进行抽象的集合,如下单、支付、退款都是业务过程。
可以基于Flink引擎对所述基于HUDI的分钟级DWD层300的新增数据(如第一数据)进行增量计算,如:按照业务划分,如流量、订单、用户等,生成字段比较多的宽表。以及将增量计算得到实时结果实时更新到所述HUDI的分钟级DWS层400中。
可以提供分钟级业务查询,OLAP(On-line Transaction Processing,联机事务处理)分析,数据分发等。
(5)基于HUDI的分钟级ADS层500。
基于HUDI的分钟级ADS层,用于存储第三数据,所述第三数据基于所述第二数据的增量计算得到。
可以基于Flink引擎对所述基于HUDI的分钟级DWS层400的新增数据(如第二数据)进行增量计算,例如:可以按照业务场景和实际应用等,进行增量计算。以及,将增量计算得到实时结果实时更新到所述HUDI的分钟级ADS层500中。
(6)基于HUDI的DIM层600。
基于HUDI的DIM层,用于从第二数据源获取数据库的增量数据。
其中,所述增量数据用于:和所述第一数据进行拼接,或者和所述第二数据进行拼接,从而同步到所述基于HUDI的分钟级DWD层或基于HUDI的分钟级DWS层。
基于HUDI的DIM层600:可以以维度为方向,基于每个维度的业务含义,通过添加维度属性、关联维度等定义计算逻辑,完成属性定义的过程并建立一致的数据分析维表。
DIM层主要由维度表(维表)构成。维表是根据维度及其属性将数据平台上构建的表物理化的表,采用宽表设计的原则。因此,DIM层可以包括高基数维度数据和低基数维度数据。高基数维度数据:一般是用户资料表、商品资料表类似的资料表。低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维表。
所述第二数据源可以是MySQL、TiDB等数据库。在一实施例中,可以采用Canal获取Binlog日志。Binlog日志是记录所有数据库表结构变更(如CREATE、ALTER TABLE)及表数据修改(INSERT、UPDATE、DELETE)的二进制日志。在另一实施例中,当所述第二数据源产生数据变更时,也可以通过CDC数据变更日志被存储到ODS层100中管道。其中,CDC(CHANGE DATACAPTURE,数据实时捕获与传输)可以确定和跟踪变更的数据,并将变更的数据导入到数据湖中的ODS层100。
上面通过基于HUDI的湖仓实现分钟级实时链路,但是有一些业务有离线存储的需要。为了满足这种要求,在可选的实施例中,还提供了离线链路和分钟级实时链路的数据对接,具体的,分别通过基于HUDI的分钟级DWD层300、基于HUDI的DIM层600对离线链路,将成功存储到这两个区域的部分数据写入到离线链路中。由于基于HUDI的分钟级DWD层300、基于HUDI的DIM层600中的数据均经过了计算,因此,在离线链路中可以不需要再次进行重复计算。
在可选的实施例中,所述基于HUDI的DIM层600连接离线链路。
在所述增量数据存储到所述基于HUDI的DIM层,基于业务标识触发离线存储操作;
所述离线存储操作用于:通过DIM层将所述增量数据中的至少部分数据传输到所述离线链路中。
在可选的实施例中,所述基于HUDI的分钟级DWD层300连接离线链路。
在所述第一数据存储完成的情形下,基于业务标识触发离线存储操作;
所述离线存储操作用于:将所述第一数据中的至少部分数据传输到所述离线链路中。
在上述可选的实施例中,将基于HUDI的分钟级DWD层300、基于HUDI的DIM层600中携带特定标识的数据写入到离线链路,得到离线数据以用于下游业务的实现。
在可选的实施例中,增量计算均采用Fink引擎执行,可以为数据湖提供流批一体能力。
本申请实施例提供的基于湖仓一体的数据处理系统,可以提供流批一体查询,可以用于商业智能、在线服务,以及OLAP等各类业务,所述数据处理系统包括如下优点:
第一:降低传输资源,减少Kafka的使用。
通过增量计算将数据写入HUDI中,而不需要传统实时链路中的Kafka,有效降低传输资源。
第二:计算资源消耗少。
相对于数据需要在离线链路和实时链路上各计算一次,本实施例可以将数据离线数据和实时数据统一在基于HUDI的数仓计算,仅需要计算一次,因此计算资源消耗少。
第三:数据闭环可以不出仓。
不同于传统数仓将计算的结果要存储到MySQL数据库中,从而出现了移仓的问题,本实施例中:数据的计算和存储统一在基于HUDI的数仓中,从而方便管理。
第四:支持快照关联,数据准确性好,提供精确的历史数据的查询。
由于计算的结果要存储到MySQL数据库中,从历史某个时间点重启无法拿到历史数据,本实施例中:数据存储在基于HUDI的数仓,可以基于HUDI快照提供历史数据。
第五:用户体验透明一致。
无论是离线还是分钟级存储,均可基于Flink的流批一体,将数据存储到基于HUDI的数仓中。即可以天级别和分钟级别的实现,仅一套代码,从而导致用户体验一致。另外,仅需切换输入输出源,计算逻辑无需特殊匹配,监控告警流程一致。
另外,可以基于HUDI+物化视图统一查询,提供快速查询能力的实时物化视图系统,具体的:
入口模块:接收批查询请求,及基于所述批查询请求关联Flink SQL引擎。
Flink执行模块:对所述批查询请求进行解析以得到SQL命令;并在所述SQL命令符合预设规则的情形下,确定针对所述SQL命令进行物化视图。所述Flink执行模块包括解析器、优化器和执行引擎。其中,解析器:响应于所述Flink SQL引擎的调用,解析所述批查询请求以得到SQL命令;及优化器:在所述SQL命令关联有物化标识的情形下,通过消息队列将所述批查询请求提供给所述物化视图管理模块,以便所述物化视图管理模块创建所述物化视图;优化所述SQL命令以得到第一执行计划,并将第一执行计划返回给所述Flink SQL引擎。所述优化器还用于:基于物化规则以及物化表的catalog,改写所述SQL命令;优化改写后的SQL命令以得到第二执行计划,并将第二执行计划返回给所述Flink SQL引擎。所述优化器还用于:基于物化表的catalog,确定针对所述SQL命令的改写;在所述物化规则中的watermark和当前时间之间的时间间隔超过预设阈值的情形下,拒绝所述改写。所述执行引擎用于:在所述物化表不包括与所述SQL命令对应的物化视图的情况下,基于所述第一执行计划进行批计算,将所述批计算的结果返回给所述Flink SQL引擎;或,在所述物化表包括与所述SQL命令对应的物化视图的情况下,基于所述第二执行计划,从所述物化表中获取和返回请求结果。
物化视图管理模块:对所述SQL命令进行流计算,基于所述流计算的结果创建物化视图。具体的:通过所述消息队列获取所述批查询请求,启动所述物化视图的创建任务,通过调用Flink流计算集群进行基于所述批查询请求的流计算,将所述流计算的结果更新所述物化视图,并将所述物化视图的元数据保存在数据库中。
实施例二
本实施例提供了一种基于湖仓一体的数据处理方法,细节和效果可参考上文。
图3示意性示出了根据本申请实施例二的基于湖仓一体的数据处理方法的流程图。如图3所示,该基于湖仓一体的数据处理方法可以包括步骤S300~S306,其中:
步骤S300,从第一数据源获取日志数据;
步骤S302,对所述日志数据进行增量计算以得到第一数据,将第一数据存储在基于HUDI的分钟级DWD层;
步骤S304,对所述第一数据进行增量计算以得到第二数据,将第二数据存储在基于HUDI的分钟级DWS层;
步骤S306,对所述第二数据进行增量计算以得到第三数据,将第三数据存储在基于HUDI的分钟级ADS层。
在可选的实施例中,所述方法还包括:
从第二数据源获取数据库的增量数据,并将所述增量数据写入到基于HUDI的DIM层;
所述增量数据用于:和所述第一数据进行拼接,或者和所述第二数据进行拼接,从而同步到所述基于HUDI的分钟级DWD层或所述基于HUDI的分钟级DWS层。
在可选的实施例中,所述基于HUDI的DIM层连接离线链路。所述方法还包括:
在所述增量数据存储到所述基于HUDI的DIM层,基于业务标识触发离线存储操作;
所述离线存储操作用于:通过DIM层将所述增量数据中的至少部分数据传输到所述离线链路中。
在可选的实施例中,所述基于HUDI的分钟级DWD层连接离线链路。所述方法还包括:
在所述第一数据存储完成的情形下,基于业务标识触发离线存储操作;
所述离线存储操作用于:将所述第一数据中的至少部分数据传输到所述离线链路中。
在可选的实施例中,所述方法还包括:
对所述日志数据进行计算,将计算的结果存储到基于HIVE的DWD层;该计算的结果经过增量计算后存储在基于HUDI的分钟级DWD层;其中,所述基于HIVE的DWD层设置在所述ODS层和所述基于HUDI的分钟级DWD层之间。
在可选的实施例中,增量计算均采用Fink引擎执行。
实施例三
图4示出了根据本申请实施例三的基于湖仓一体的数据处理装置的框图,该基于湖仓一体的数据处理装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例中各程序模块的功能。如图4所示,所述基于湖仓一体的数据处理装置40可以包括获取模块41、第一计算模块42、第二计算模块43、和第三计算模块44,其中:
获取模块41,用于从第一数据源获取日志数据;
第一计算模块42,用于对所述日志数据进行增量计算以得到第一数据,将第一数据存储在基于HUDI的分钟级DWD层;
第二计算模块43,用于对所述第一数据进行增量计算以得到第二数据,将第二数据存储在基于HUDI的分钟级DWS层;
第三计算模块44,用于对所述第二数据进行增量计算以得到第三数据,将第三数据存储在基于HUDI的分钟级ADS层。
在可选的实施例中,所述装置还包括写入模块(未标识),用于:
从第二数据源获取数据库的增量数据,并将所述增量数据写入到基于HUDI的DIM层;
所述增量数据用于:和所述第一数据进行拼接,或者和所述第二数据进行拼接,从而同步到所述基于HUDI的分钟级DWD层或所述基于HUDI的分钟级DWS层。
在可选的实施例中,所述基于HUDI的DIM层连接离线链路。
所述装置还包括离线存储模块(未标识),用于:
在所述增量数据存储到所述基于HUDI的DIM层,基于业务标识触发离线存储操作;
所述离线存储操作用于:通过DIM层将所述增量数据中的至少部分数据传输到所述离线链路中。
在可选的实施例中,所述基于HUDI的分钟级DWD层连接离线链路。
所述装置还包括离线存储模块(未标识),用于:
在所述第一数据存储完成的情形下,基于业务标识触发离线存储操作;
所述离线存储操作用于:将所述第一数据中的至少部分数据传输到所述离线链路中。
在可选的实施例中,所述装置还包括第四计算模块(未标识),用于:
对所述日志数据进行计算,将计算的结果存储到基于HIVE的DWD层;该计算的结果经过增量计算后存储在基于HUDI的分钟级DWD层;其中,所述基于HIVE的DWD层设置在所述ODS层和所述基于HUDI的分钟级DWD层之间。
在可选的实施例中,增量计算均采用Fink引擎执行。
实施例四
图5示意性示出了根据本申请实施例四的适于实现基于湖仓一体的数据处理方法的计算机设备的硬件架构示意图。所述计算机设备10000可以为基于Flink的服务平台2或其一部分。所述计算机设备10000其是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图5所示,计算机设备10000至少包括但不限于:可通过系统总线相互通信链接存储器10010、处理器10020、网络接口10030。其中:
存储器10010至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器10010可以是计算机设备10000的内部存储模块,例如该计算机设备10000的硬盘或内存。在另一些实施例中,存储器10010也可以是计算机设备10000的外部存储设备,例如该计算机设备10000上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器10010还可以既包括计算机设备10000的内部存储模块也包括其外部存储设备。本实施例中,存储器10010通常用于存储安装于计算机设备10000的操作系统和各类应用软件,例如基于湖仓一体的数据处理方法的程序代码等。此外,存储器10010还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器10020在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器10020通常用于控制计算机设备10000的总体操作,例如执行与计算机设备10000进行数据交互或者通信相关的控制和处理等。本实施例中,处理器10020用于运行存储器10010中存储的程序代码或者处理数据。
网络接口10030可包括无线网络接口或有线网络接口,该网络接口10030通常用于在计算机设备10000与其他计算机设备之间建立通信连接。例如,网络接口10030用于通过网络将计算机设备10000与外部终端相连,在计算机设备10000与外部终端之间的建立数据传输通道和通信连接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图5仅示出了具有部件10010-10030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器10010中的基于湖仓一体的数据处理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器10020)所执行,以完成本申请。
实施例五
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机程序,计算机程序被处理器执行时实现实施例中的基于湖仓一体的数据处理方法的步骤。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例中的基于湖仓一体的数据处理方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
需要说明的是,以上仅为本申请的优选实施例,并非因此限制本申请的专利保护范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (11)
1.一种基于湖仓一体的数据处理系统,其特征在于,所述系统包括:
ODS层,用于从第一数据源获取日志数据;
基于HUDI的分钟级DWD层,用于存储第一数据,所述第一数据基于所述日志数据的增量计算得到;
基于HUDI的分钟级DWS层,用于存储第二数据,所述第二数据基于所述第一数据的增量计算得到;
基于HUDI的分钟级ADS层,用于存储第三数据,所述第三数据基于所述第二数据的增量计算得到。
2.根据权利要求1所述的系统,其特征在于,还包括:
基于HUDI的DIM层,用于从第二数据源获取数据库的增量数据;
其中,所述增量数据用于:和所述第一数据进行拼接,或者和所述第二数据进行拼接,从而同步到所述基于HUDI的分钟级DWD层或基于HUDI的分钟级DWS层。
3.根据权利要求2所述的系统,其特征在于,所述基于HUDI的DIM层连接离线链路;
在所述增量数据存储到所述基于HUDI的DIM层,基于业务标识触发离线存储操作;
所述离线存储操作用于:通过DIM层将所述增量数据中的至少部分数据传输到所述离线链路中。
4.根据权利要求1所述的系统,其特征在于,所述基于HUDI的分钟级DWD层连接离线链路;
在所述第一数据存储完成的情形下,基于业务标识触发离线存储操作;
所述离线存储操作用于:将所述第一数据中的至少部分数据传输到所述离线链路中。
5.根据权利要求1至4任意一项所述的系统,其特征在于,还包括:
基于HIVE的DWD层,设置在所述ODS层和所述基于HUDI的分钟级DWD层之间;
其中,所述基于HIVE的DWD层,用于:对所述日志数据进行计算,将计算的结果进行存储;该计算的结果经过增量计算后存储在基于HUDI的分钟级DWD层。
6.根据权利要求1至4任意一项所述的系统,其特征在于,增量计算均采用Fink引擎执行。
7.一种基于湖仓一体的数据处理方法,其特征在于,所述方法包括:
从第一数据源获取日志数据;
对所述日志数据进行增量计算以得到第一数据,将第一数据存储在基于HUDI的分钟级DWD层;
对所述第一数据进行增量计算以得到第二数据,将第二数据存储在基于HUDI的分钟级DWS层;
对所述第二数据进行增量计算以得到第三数据,将第三数据存储在基于HUDI的分钟级ADS层。
8.根据权利要求7所述的方法,其特征在于,还包括:
从第二数据源获取数据库的增量数据,并将所述增量数据写入到基于HUDI的DIM层;
所述增量数据用于:和所述第一数据进行拼接,或者和所述第二数据进行拼接,从而同步到所述基于HUDI的分钟级DWD层或所述基于HUDI的分钟级DWS层。
9.一种基于湖仓一体的数据处理装置,其特征在于,所述装置包括:
获取模块,用于从第一数据源获取日志数据;
第一计算模块,用于对所述日志数据进行增量计算以得到第一数据,将第一数据存储在基于HUDI的分钟级DWD层;
第二计算模块,用于对所述第一数据进行增量计算以得到第二数据,将第二数据存储在基于HUDI的分钟级DWS层;
第三计算模块,用于对所述第二数据进行增量计算以得到第三数据,将第三数据存储在基于HUDI的分钟级ADS层。
10.一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时用于实现权利要求7至8任意一项所述基于湖仓一体的数据处理方法的步骤。
11.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序可被至少一个处理器所执行,以使所述至少一个处理器执行权利要求7至8任意一项所述的基于湖仓一体的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211283718.7A CN115599871A (zh) | 2022-10-19 | 2022-10-19 | 基于湖仓一体的数据处理系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211283718.7A CN115599871A (zh) | 2022-10-19 | 2022-10-19 | 基于湖仓一体的数据处理系统和方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115599871A true CN115599871A (zh) | 2023-01-13 |
Family
ID=84849020
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211283718.7A Pending CN115599871A (zh) | 2022-10-19 | 2022-10-19 | 基于湖仓一体的数据处理系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115599871A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431654A (zh) * | 2023-06-08 | 2023-07-14 | 中新宽维传媒科技有限公司 | 基于湖仓一体化的数据存储方法、装置、介质和计算设备 |
-
2022
- 2022-10-19 CN CN202211283718.7A patent/CN115599871A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116431654A (zh) * | 2023-06-08 | 2023-07-14 | 中新宽维传媒科技有限公司 | 基于湖仓一体化的数据存储方法、装置、介质和计算设备 |
CN116431654B (zh) * | 2023-06-08 | 2023-09-08 | 中新宽维传媒科技有限公司 | 基于湖仓一体化的数据存储方法、装置、介质和计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7273045B2 (ja) | Sqlクエリプランを最適化するための次元コンテキスト伝搬技術 | |
JP6617117B2 (ja) | 半構造データのためのスケーラブルな分析プラットフォーム | |
US10409650B2 (en) | Efficient access scheduling for super scaled stream processing systems | |
US11226963B2 (en) | Method and system for executing queries on indexed views | |
CN111339073A (zh) | 实时数据处理方法、装置、电子设备及可读存储介质 | |
US10409813B2 (en) | Imputing data for temporal data store joins | |
CN113535856B (zh) | 数据同步方法及系统 | |
CN112148718A (zh) | 一种用于城市级数据中台的大数据支撑管理系统 | |
Fikri et al. | An adaptive and real-time based architecture for financial data integration | |
CN112948492A (zh) | 一种数据处理系统、方法、装置、电子设备及存储介质 | |
CN114218218A (zh) | 基于数据仓库的数据处理方法、装置、设备及存储介质 | |
CN113468199A (zh) | 索引更新方法及系统 | |
CN111680017A (zh) | 一种数据同步的方法及装置 | |
US10776368B1 (en) | Deriving cardinality values from approximate quantile summaries | |
CN115640300A (zh) | 一种大数据管理方法、系统、电子设备和存储介质 | |
CN115599871A (zh) | 基于湖仓一体的数据处理系统和方法 | |
CN108549714B (zh) | 一种数据处理方法及装置 | |
CN116126950A (zh) | 实时物化视图系统和方法 | |
CN114416703A (zh) | 数据完整性自动监控方法、装置、设备及介质 | |
CN115168474B (zh) | 一种基于大数据模型的物联中台系统搭建方法 | |
Arsirii et al. | Information technology of supporting architectural solutions using polyglot persistence concept in learning management systems | |
CN111125045B (zh) | 一种轻量级etl处理平台 | |
CN113568892A (zh) | 一种基于内存计算对数据源进行数据查询的方法和设备 | |
US20230066540A1 (en) | Hybrid data processing system and method | |
US11663216B2 (en) | Delta database data provisioning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |