一种数据处理方法、装置、电子设备及存储介质与流程

文档序号:20918144发布日期:2020-05-29 13:47阅读:169来源:国知局
一种数据处理方法、装置、电子设备及存储介质与流程

本公开实施例涉及计算机技术领域,具体涉及一种数据处理方法、装置、电子设备及存储介质。



背景技术:

数据仓库是一种结构化的数据环境,是面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。图1示出了一种数据仓库的架构,包括三个层:数据运营层(ods)、数据仓库层(dw)和数据产品层(app)。

ods层用于操作数据存储。数据来源层的数据经过etl(extract-transform-load,抽取-转换-加载)后装入ods层,ods层的数据通常基于数据源的业务分类进行分类。dw层获取ods层的数据,并基于主题建立各种数据模型。app层提供给数据产品、数据分析和数据挖掘使用的数据。

目前,数据仓库主要以kafka或者其他消息队列为主要组件,消息队列的性质决定了数据只能增加不能修改,数据恢复困难。另外,数据仓库的表单结构不能分区分桶,无法针对性地使用一部分数据。

上述对问题的发现过程的描述,仅用于辅助理解本公开的技术方案,并不代表承认上述内容是现有技术。



技术实现要素:

为了解决现有技术存在的至少一个问题,本公开的至少一个实施例提供了一种数据处理方法、装置、电子设备及存储介质。

第一方面,本公开实施例提出一种数据处理方法,应用于数据仓库,所述方法包括:

获取数据源的数据;

对所述数据源的数据进行流式处理,得到第一数据;

将所述第一数据关联对应的维度表,得到第二数据;

将所述第二数据中不可复用数据写入消息队列;

将所述第二数据中的可复用数据写入数据湖表。

第二方面,本公开实施例还提出一种数据处理装置,应用于数据仓库,所述装置包括:

获取单元,用于获取数据源的数据;

第一处理单元,用于对所述数据源的数据进行流式处理,得到第一数据;

第二处理单元,用于将所述第一数据关联对应的维度表,得到第二数据;

写入单元,用于将所述第二数据中不可复用数据写入消息队列;以及,将所述第二数据中的可复用数据写入数据湖表。

第三方面,本公开实施例还提出一种电子设备,包括:处理器和存储器;所述处理器通过调用所述存储器存储的程序或指令,用于执行如第一方面所述方法的步骤。

第四方面,本公开实施例还提出一种非暂态计算机可读存储介质,用于存储程序或指令,所述程序或指令使计算机执行如第一方面所述方法的步骤。

可见,本公开的至少一个实施例中,通过将数据仓库层的数据区分为可复用数据和不可复用数据,进而不可复用数据写入数据湖表,进而使得数据湖表中的数据可以被分区,解决数据恢复和实时数据分区的问题。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是一种数据仓库的示例性架构图;

图2是本公开实施例提供的一种数据仓库的示例性架构图;

图3是本公开实施例提供的一种电子设备的示例性框图;

图4是本公开实施例提供的一种数据处理方法的示例性流程图;

图5是本公开实施例提供的一种数据处理装置的示例性框图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。此处所描述的具体实施例仅仅用于解释本公开,而非对本公开的限定。基于所描述的本公开的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本公开保护的范围。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

图2为本公开实施例提供的一种数据仓库的示例性架构图,所述数据仓库为实时数据仓库,相比离线数据仓库,增加了更多样化数据源的导入存储,更多样化数据处理方式和时效,更多样化数据使用方式和更多样化数据终端服务,满足实时数据需求,例如数据报表、仪表板、分析挖掘、数据应用等。如图2所示,数据仓库包括:数据运营层(ods)、数据仓库层(dw)和数据产品层(app)。

ods层可获取数据来源层的数据。其中,数据来源层包括的数据源可以为业务库、埋点日志或其他数据源。数据来源层可将数据统一接入消息队列(例如kafka)。在一些实施例中,业务库的数据可采用sqoop来抽取,例如每天定时抽取一次,其中sqoop是一款开源的工具,主要用于在hadoop(hive)与传统的数据库(mysql等)间进行数据的传递。在一些实施例中,可以采用canal监听mysql的binlog(二进制日志),实时接入即可,其中canal是一款开源的工具,基于数据库增量日志解析,提供增量数据订阅和消费。埋点日志一般以文件的形式保存,可以使用flume定时抽取,也可以用sparkstreaming或者storm来实时接入,其中flume是一个分布式的海量日志采集、聚合和传输的系统;sparkstreaming是一个实时计算框架,可以实时或流式处理数据;storm是一个分布式实时大数据处理系统。其它数据源具有多样性,与具体业务相关,不再赘述。

在一些实施例中,ods层对数据源的数据进行流式处理(例如sparkstreaming)。其中,流式处理至少包括:数据清洗和etl。所述数据清洗包括但不限于:异常字段的处理、字段命名规范化、时间字段的统一等。在一些实施例中,ods层的数据通常基于数据源的业务分类进行分类。

dw层用于面向主题域建模。在一些实施例中,dw层基于主题建立各种数据模型,采用面向主题的数据组织方式处理数据。在一些实施例中,dw层将ods层的数据关联对应的维度表。在一些实施例中,dw层从ods层的数据中抽象出通用的维度,例如时间、ip(网际互联协议)地址、id(身份标识);并根据维度进行统计,例如用户每个时间段在不同登录ip地址购买的商品数等。在一些实施例中,dw层可对ods层的数据进行轻度综合和汇总统计。其中,轻度综合例如为通过一定的时间窗口,对数据进行汇总,例如通用指标的汇总。

在一些实施例中,dw层可进行每日定时任务,例如日计算任务,每天凌晨算前一天的数据。每日定时任务可使用hive、spark或者mr程序来计算,最终结果写入hive、hbase、mysql、es或者redis中。其中,hive是基于hadoop构建的一套数据仓库分析系统。mr(mapreduce)程序用于大规模数据集的并行运算。hbase是一个分布式的、面向列的开源数据库。es是一个分布式文档数据库。redis是一个key-value(键-值)存储系统,支持存储的value类型包括string(字符串、list(链表)、set(集合)、zset(sortedset,有序集合)和hash(哈希类型)等。在一些实施例中,dw层可处理实时数据,针对的是各种实时的系统,例如实时推荐、实时用户画像,通常采用sparkstreaming、storm或者flink来计算,最后会写入es、hbase或者redis中,其中flink是一个开源的流式处理框架。

在一些实施例中,dw层将不可复用数据写入消息队列(例如kafka),并将可复用数据写入数据湖(例如deltalake)表。其中,deltalake是一个存储层,为apachespark和其他大数据引擎提供可伸缩的acid事务,让用户可以基于hdfs和云存储构建可靠的数据湖,其中acid包括:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。此外,deltalake还提供了内置的数据版本控制,可以方便地回滚以及重新生成报告。在一些实施例中,不可复用数据和可复用数据的划分基于业务类型进行划分。在一些实施例中,dw层对ods层的数据进行轻度综合得到可复用数据。在一些实施例中,不可复用数据例如为结果指标等数据。

在一些实施例中,dw层基于可复用数据写入数据湖表的时间,将可复用数据分区并写入分区表。其中,分区表可以为hive的外部分区表。hive的外部分区表可对数据湖表的数据做业务分区,达到可离线使用,并可以离线恢复数据。在一些实施例中,使用hive的外部分区表,可读取数据湖表的数据,实现流批数据源统一。在一些实施例中,dw层将可复用数据写入消息队列或关系型数据库。

在一些实施例中,dw层可将数据湖表的数据写入离线数据库。在一些实施例中,dw层基于全量数据运算时,例如流式处理过程中数据异常或逻辑变更时,从离线数据库读取历史数据,其中全量数据不仅包括实时数据,还包括离线数据库的历史数据;进而合并历史数据和实时数据,并进行全量数据运算。其中,实时数据可以为埋点日志。

在一些实施例中,dw层将消息队列的数据写入线上数据库。在一些实施例中,dw层对数据湖表的数据进行流式处理后写入线上数据库。其中,流式处理例如按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,olap(onlineanalyticalprocessing,在线分析处理)分析,数据分发。在一些实施例中,数据湖表可以为多个。

app层提供给数据产品、数据分析和数据挖掘使用的数据。在一些实施例中,app层的数据存储到数据库(例如tidb,hbase)中,提供数据服务。在一些实施例中,app层将线上数据库的数据进行前端展示。在一些实施例中,app层根据业务需要,将线上数据库的数据直接提供查询展现或导入至mysql中使用。

图3是本公开实施例提供的一种电子设备的结构示意图。如图3所示,电子设备包括:至少一个处理器301、至少一个存储器302和至少一个通信接口303。电子设备中的各个组件通过总线系统304耦合在一起。通信接口303,用于与外部设备之间的信息传输。可理解地,总线系统304用于实现这些组件之间的连接通信。总线系统304除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但为了清楚说明起见,在图3中将各种总线都标为总线系统304。

可以理解,本实施例中的存储器302可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。

在一些实施方式中,存储器302存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。

其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(mediaplayer)、浏览器(browser)等,用于实现各种应用业务。实现本公开实施例提供的数据处理方法的程序可以包含在应用程序中。

在本公开实施例中,处理器301通过调用存储器302存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,处理器301用于执行本公开实施例提供的数据处理方法各实施例的步骤。

本公开实施例提供的数据处理方法可以应用于处理器301中,或者由处理器301实现。处理器301可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器301中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器301可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本公开实施例提供的数据处理方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器302,处理器301读取存储器302中的信息,结合其硬件完成方法的步骤。

图4为本公开实施例提供的一种数据处理方法的示例性流程图。该方法可应用于数据仓库。另外,该方法的执行主体为电子设备,为便于描述,以下实施例中以电子设备为执行主体说明数据处理方法的流程。

如图4所示,在步骤401中,电子设备获取数据源的数据。其中,数据源可以为业务库、埋点日志或其他数据源。业务库的数据可采用sqoop来抽取,例如每天定时抽取一次。在一些实施例中,可以采用canal监听mysql的binlog,实时接入即可。埋点日志一般以文件的形式保存,可以使用flume定时抽取,也可以用sparkstreaming或者storm来实时接入。其它数据源具有多样性,与具体业务相关,不再赘述。

在步骤402中,电子设备对所述数据源的数据进行流式处理,得到第一数据。其中,流式处理例如sparkstreaming。在一些实施例中,流式处理至少包括:数据清洗和etl。所述数据清洗包括但不限于:异常字段的处理、字段命名规范化、时间字段的统一等。

在步骤403中,电子设备将所述第一数据关联对应的维度表,得到第二数据。在一些实施例中,电子设备从第一数据中抽象出通用的维度,例如时间、ip地址、id;并根据维度进行统计,例如用户每个时间段在不同登录ip地址购买的商品数等。

在步骤404中,电子设备将所述第二数据中不可复用数据写入消息队列。其中,消息队列例如kafka。

在步骤405中,电子设备将所述第二数据中的可复用数据写入数据湖(例如deltalake)表。其中,deltalake是一个存储层,为apachespark和其他大数据引擎提供可伸缩的acid事务,让用户可以基于hdfs和云存储构建可靠的数据湖。此外,deltalake还提供了内置的数据版本控制,可以方便地回滚以及重新生成报告。

在一些实施例中,电子设备基于可复用数据写入数据湖表的时间,将可复用数据分区并写入分区表。其中,分区表可以为hive的外部分区表。hive的外部分区表可对数据湖表的数据做业务分区,达到可离线使用,并可以离线恢复数据。在一些实施例中,使用hive的外部分区表,可读取数据湖表的数据,实现流批数据源统一。在一些实施例中,电子设备将可复用数据写入消息队列或关系型数据库。

在一些实施例中,电子设备可将数据湖表的数据写入离线数据库。在一些实施例中,电子设备基于全量数据运算时,例如流式处理过程中数据异常或逻辑变更时,从离线数据库读取历史数据;进而合并历史数据和实时数据,并进行全量数据运算。其中,实时数据可以为埋点日志。

在一些实施例中,电子设备将消息队列的数据写入线上数据库。在一些实施例中,电子设备对数据湖表的数据进行流式处理后写入线上数据库。其中,流式处理例如按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,olap分析,数据分发。在一些实施例中,数据湖表可以为多个。

在一些实施例中,电子设备将线上数据库的数据进行前端展示。在一些实施例中,电子设备根据业务需要,将线上数据库的数据直接提供查询展现或导入至mysql中使用。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员能够理解,本公开实施例并不受所描述的动作顺序的限制,因为依据本公开实施例,某些步骤可以采用其他顺序或者同时进行。另外,本领域技术人员能够理解,说明书中所描述的实施例均属于可选实施例。

图5为本公开实施例提供的一种数据处理装置500的示例性框图。所示数据处理装置500可应用于数据仓库。如图5所示,数据处理装置500可包括但限于:获取单元501、第一处理单元502、第二处理单元503和写入单元504。

获取单元501,用于获取数据源的数据。

第一处理单元502,用于对所述数据源的数据进行流式处理,得到第一数据。

第二处理单元503,用于将所述第一数据关联对应的维度表,得到第二数据。

写入单元504,用于将所述第二数据中不可复用数据写入消息队列;以及,将所述第二数据中的可复用数据写入数据湖表。

在一些实施例中,所述写入单元504还用于基于所述可复用数据写入数据湖表的时间,将所述可复用数据分区并写入分区表。在一些实施例中,所述写入单元504还用于将所述可复用数据写入所述消息队列或关系型数据库。在一些实施例中,所述写入单元504还用于将所述数据湖表的数据写入离线数据库。

在一些实施例中,数据处理装置500还包括:读取单元,用于基于全量数据运算时,从所述离线数据库读取历史数据;合并运算单元,用于合并所述历史数据和实时数据,并进行全量数据运算。

在一些实施例中,所述写入单元504还用于将所述消息队列的数据写入线上数据库。在一些实施例中,数据处理装置500还包括:第三处理单元,用于对所述数据湖表的数据进行流式处理,得到第三数据;所述写入单元504,还用于将所述第三数据写入线上数据库。

在一些实施例中,数据处理装置500还包括:展示单元,用于将所述线上数据库的数据进行前端展示。

在一些实施例中,数据处理装置500中各单元的划分仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如获取单元501、第一处理单元502、第二处理单元503和写入单元504中的至少两个单元可以实现为一个单元;获取单元501、第一处理单元502、第二处理单元503或写入单元504也可以划分为多个子单元。可以理解的是,各个单元或子单元能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。

本公开实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如数据处理方法各实施例的步骤,为避免重复描述,在此不再赘述。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。

本领域的技术人员能够理解,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

虽然结合附图描述了本公开的实施方式,但是本领域技术人员可以在不脱离本公开的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1