基于大数据技术的实时与离线业务统一处理方法和装置
技术领域
本发明涉及大数据
技术领域
,尤其涉及一种基于大数据技术的实时与离线业务统一处理方法和装置。背景技术
在各行各业中,都开始留意日常搜集的业务数据的短期实时用途和长期用途。对于购物网站,用户的点击浏览购买行为都对于形成准确的用户画像至关重要,对于打车软件,用户的行程信息也对于预测用户未来时间段内的打车需求至关重要,有些数据分析挖掘对于实时性要求非常高,例如社交软件的热搜榜、正在查看的热点新闻会实时更新点击量等等,而有些数据分析挖掘对于实时性要求并不高,例如,之前举例的用户画像、用户打车行为预测,都可以在服务器不繁忙的时候再对搜集的数据进行分析挖掘,例如,购物网站和打车软件可以在浏览量低和接单量低的凌晨时段进行白天采集后存储下来的用户数据的分析挖掘,而更多业务软件的业务数据都是直接存储以备将来的业务分析需求再使用,例如,当前业务范围内进行分析挖掘的需求只集中在5个类型,但是随着公司的扩大,有业务的扩展或者跨公司的合作或者参与慈善活动等等时,公司之前存储的业务数据有可能被重新拉取进行新的业务类型的分析和挖掘。因此,各行各业的商家,都在不断记录自己的业务数据,有的给实时业务进行处理分析了得到实时结果以供展示,有得存储后等待特定时期被离线业务拉取某些数据进行分析挖掘得到实时性要求不高的结果以供展示,还有的仅进行存储以供被未来扩展出的离线业务用上,提供潜在被分析挖掘的价值。
目前,对于流式数据与批量数据,传统方式主要采用各自独立的采集系统、数据分析与挖掘系统的方法,即数据的实时分析与挖掘业务与数据的离线分析与挖掘业务分为两条独立的线路各自进行各自采集、分析和挖掘步骤;该方法在数据采集接入阶段、数据整合阶段都需要开发两套程序去采集接入与处理,那么直接带来的问题是开发过程的冗余、开发时间成本的增加以及环境资源要求的提高,同时也存在数据不统一化的弊端。
因此,如何避免现有的对采集数据的实时分析挖掘和离线分析挖掘分开处理,导致部分数据重复处理计算冗余,且需要开发两套单独的程序去分别接入处理实时分析挖掘和离线分析挖掘的数据,抬高了分析挖掘功能的开发时间成本,且数据不统一化,仍然是本领域技术人员亟待解决的问题。
发明内容
本发明提供一种基于大数据技术的实时与离线业务统一处理方法和装置,用以解决现有的对采集数据的实时分析挖掘和离线分析挖掘分开处理,导致部分数据重复处理计算冗余,且需要开发两套单独的程序去分别接入处理实时分析挖掘和离线分析挖掘的数据,抬高了分析挖掘功能的开发时间成本,且数据不统一化的问题,通过将实时采集的业务数据写入KAFKA集群,然后基于实时业务需求和离线业务需求对KAFKA集群中的数据进行统一处理整合,得到明细数据,所述明细数据中的一部分数据作为第一明细数据用于实时业务的分析挖掘,再在所述明细数据中筛选出另一部分数据作为第二明细数据用于离线业务的分析挖掘,其中,第一明细数据直接进入对应实时业务的分析处理环节,对其进行分析挖掘以得到对应实时业务的分析结果,而第二明细数据被存储为数据库明细宽表,等待被离线业务请求获取后对其进行分析挖掘以得到对应离线业务的分析结果。如此,将实时业务和离线业务中对采集数据进行处理整合的步骤进行合并统一,避免了开发两套程序分别对实时业务和离线业务进行采集数据中部分数据处理整合的重复,实时业务中采集的数据经过处理整合后可以直接存储于数据库明细宽表中,避免离线业务需要用到同一数据时又进行一次处理整合,而离线业务的整合处理也合并到实时业务的整合处理中,避免了开发两套分别针对于实时业务和离线业务的接入处理的程序,节约了开发成本,且统一了实时业务和离线业务中对接入数据处理整合的形式结构。
本发明提供一种基于大数据技术的实时与离线业务统一处理方法,包括:
将实时采集的业务数据写入KAFKA集群;
基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;
对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。
根据本发明提供的一种基于大数据技术的实时与离线业务统一处理方法,所述基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据,包括:
基于实时业务需求和离线业务范围确定数据处理整合后的属性维度;
基于所述属性维度对所述KAFKA集群中的数据进行抽取、转换和维度关联操作,得到处理整合后的明细数据;
从所述明细数据中筛选出所述实时业务对应的第一明细数据,且从所述明细数据中筛选出所述离线业务范围对应的第二明细数据。
根据本发明提供的一种基于大数据技术的实时与离线业务统一处理方法,基于所述属性维度确定所述抽取操作的抽取条件,基于所述属性维度确定所述转换操作中目标数据对应的关联数据的类型,所述维度关联操作用于生成关联整合后的数据的视图表。
根据本发明提供的一种基于大数据技术的实时与离线业务统一处理方法,所述基于所述属性维度对所述KAFKA集群中的数据进行抽取、转换和维度关联操作,得到处理整合后的明细数据,包括:
基于预设Web流式平台上人工编写的目标脚本语句控制Flink计算框架对所述KAFKA集群中的数据进行抽取、转换和维度关联处理,得到处理整合后的明细数据;
其中,所述目标脚本语句为包括所述抽取、转换和维度关联处理的指令的SQL语句,其被所述预设Web流式平台打包上传至所述Flink计算框架,以供所述Flink计算框架转换成Flink语句执行。
根据本发明提供的一种基于大数据技术的实时与离线业务统一处理方法,所述预设Web流式平台包括预先绑定并关联的KAFKA集群中的主题数据,以及预先封装的功能模块;
对应地,所述目标脚本语句人工编写的过程,包括:
在基于所述主题数据和所述功能模块形成的处理模版语句上进行人工配置,得到目标脚本语句。
根据本发明提供的一种基于大数据技术的实时与离线业务统一处理方法,所述从所述明细数据中筛选出所述实时业务对应的第一明细数据,包括:
从所述明细数据中筛选出所述实时业务对应的第一明细数据;
创建KAFKA实时明细宽表,将所述第一明细数据导入所述KAFKA实时明细宽表,以供后续进行所述实时业务的分析处理。
根据本发明提供的一种基于大数据技术的实时与离线业务统一处理方法,所述从所述明细数据中筛选出所述离线业务范围对应的第二明细数据,包括:
从所述明细数据中筛选出所述离线业务范围对应的第二明细数据;
创建离线实时明细宽表,将所述第二明细数据导入所述离线实时明细宽表,以供后续进行所述离线业务的分析处理;
其中,所述离线实时明细宽表为HIVE实时明细宽表或HDFS(Hadoop DistributedFile System,Hadoop分布式文件系统)实时明细宽表。
本发明还提供一种基于大数据技术的实时与离线业务统一处理装置,包括:
写入单元,用于将实时采集的业务数据写入KAFKA集群;
统一整合单元,用于基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;
分支单元,用于对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述的基于大数据技术的实时与离线业务统一处理方法的步骤。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的基于大数据技术的实时与离线业务统一处理方法的步骤。
本发明提供的基于大数据技术的实时与离线业务统一处理方法和装置,通过将实时采集的业务数据写入KAFKA集群;基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。由于将实时业务和离线业务中对采集数据进行处理整合的步骤进行合并统一,避免了开发两套程序分别对实时业务和离线业务进行采集数据中部分数据处理整合的重复,实时业务中采集的数据经过处理整合后可以直接存储于数据库明细宽表中,避免离线业务需要用到同一数据时又进行一次处理整合,而离线业务的整合处理也合并到实时业务的整合处理中,避免了开发两套分别针对于实时业务和离线业务的接入处理的程序,节约了开发成本,且统一了实时业务和离线业务中对接入数据处理整合的形式结构。因此,本发明提供的方法和装置,避免了部分数据重复接入处理的冗余计算,且只需要开发一套程序对实时分析挖掘和离线分析挖掘的数据进行统一接入处理,降低了分析挖掘功能的开发时间成本,且使得实时业务和离线业务的接入数据处理整合后的形式结构统一。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术提供的离线业务和实时业务处理流程图;
图2为本发明提供的一种基于大数据技术的实时与离线业务统一处理方法的流程示意图;
图3为本发明提供的抽取行车实时日志表结构的操作指令脚本示意图;
图4为本发明提供的创建车站和站台维度表的操作指令脚本示意图;
图5为本发明提供的行车明细视图表数据形成过程的实现指令脚本示例图;
图6为本发明提供的KAFKA实时宽表创建、晚点车辆数据生成与导入过程的实现指令脚本示例图;
图7为本发明提供的基于HIVE创建明细宽表并导入晚点车辆数据的实现指令脚本示例图;
图8为本发明提供的基于批流一体化大数据技术对轨道交通行车日志数据统一采集与整合方法的流程示意图;
图9为本发明提供的基于大数据技术的实时与离线业务统一处理装置的结构示意图;
图10为本发明提供的一种电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于现有的对采集数据的实时分析挖掘和离线分析挖掘普遍存在因为分开处理导致部分数据重复处理计算冗余,且需要开发两套单独的程序去分别接入处理实时分析挖掘和离线分析挖掘的数据,抬高了分析挖掘功能的开发时间成本,且数据不统一化的问题。下面结合图1-图7描述本发明的一种基于大数据技术的实时与离线业务统一处理方法。
此处首先对现有技术中的对采集数据的实时分析挖掘和离线分析挖掘分开处理的流程。图1为现有技术提供的离线业务和实时业务处理流程图,如图1所示,在传统的数据分析挖掘中,离线业务和实时业务分成两套接入处理的程序,虚线左边表示的是离线业务的流程,对于图1中展示的离线业务流程,默认给定了存储实时采集数据的数据库或存储模块,先通过定时批量数据采集系统对存储采集数据的数据库或存储模块中的数据进行拉取接入,然后通过特定开发出来处理离线拉取数据的批量计算框架对拉取到的数据进行抽取、转换和维度关联,然后生成离线明细宽表,所述离线明细宽表中的数据用于后续的离线数据分析与挖掘。
此处对抽取、转换和维度关联进行说明,抽取是基于离线业务从拉取的数据中提取出与离线业务相关的特定数据,通常需要根据离线业务设定对应的抽取条件(即查询条件),从拉取的大量数据中淘出对离线业务有用的数据,然后再进行数据转换,即将抽取的数据和本地相关的数据进行关联,确定需要关联的数据类型,例如,购物网站需要对每月服饰消费超过两千的人群做一个画像,其中,抽取条件就是每月服饰类消费超过两千,而数据转换就是将抽取出来的用户的信息进行整合,而用户信息中既包括本地存储的用户基本信息例如年龄、注册邮箱、性别,还包括需要从拉取的大量数据中提取的信息,例如每天在该购物网站的浏览量、每天在该购物网站的浏览时间,近期该用户服饰相关(例如化妆品等)的消费如何,这些都属于数据转换,最后的维度关联即将相关数据插入以用户账号或者用户名为目录的明细宽表中,生成关联整合后的数据的视图表。
图1中虚线右边展示了实时业务的流程图,对于图1中展示的实时业务流程,先通过实时数据监控系统对业务数据进行实时采集,然后再使用流式计算框架将实时数据监控系统实时采集的数据进行实时写入,且通过特定开发出来处理实时拉取数据的流式计算框架进行抽取、转换和维度关联的处理,这个特定开发出来处理实时拉取数据的流式计算框架中抽取、转换和维度关联的操作是开发人员在确定实时业务具体需求后通过编写相应代码执行,最后将生成的专门用于进行对应实时业务分析挖掘的相关数据构成的实时明细宽表发送至实时数据分析与挖掘模块,进行对应实时业务的分析与挖掘。
由图1可知,对于流式数据与批量数据,传统方式主要采用各自独立的采集系统、数据分析与挖掘系统的方法,该方法在数据采集接入阶段、数据整合阶段都需要开发两套程序去采集接入与处理,那么直接带来的问题是开发过程的冗余、开发时间成本的增加以及环境资源要求的提高,同时也存在数据不统一化的弊端。
图2为本发明提供的一种基于大数据技术的实时与离线业务统一处理方法的流程示意图,如图2所示,该方法包括:
步骤210,将实时采集的业务数据写入KAFKA集群。
可选地,本发明提供的基于大数据技术的实时与离线业务统一处理方法提供一种对离线业务和实时业务统一接入处理的功能,首先将实时监控系统采集的业务数据写入KAFKA集群,即将所有采集的数据统一接入KAFKA集群。此处对KAFKA集群进行简单介绍,KAFKA集群是一个分布式消息系统,具有高水平扩展和高吞吐量的特点,在KAFKA集群中,没有“中心主节点”的概念,集群中所有节点都是对等的;对KAFKA中的一些概念进行介绍(下文会涉及的):1、主题:KAFKA中可将消息分类,每一类的消息称为一个主题(topic),消费者可以对不同的主题进行不同的处理,这个主题在下文中会对应实时业务或者离线业务中不同业务类型的业务数据的集合;2、代理(Broker):每个代理即一个KAFKA服务实例,多个代理构成一个KAFKA集群,生产者发布的消息将保存在代理中,消费者将从Broker中拉取消息进行消费(consume);3、生产者(Producer):负责生产消息并发送给Broker;4、消费者:负责消费Broker中主题消息。此处需要说明的是,业务数据的可以是不同领域的数据,可以是购物网站的用户行为数据,也可以是轨道交通系统中的线路行车日志数据等等,此处不作具体限定。
步骤220,基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据。
可选地,本发明提供的一种对离线业务和实时业务统一接入处理的功能需要对采集存储至KAFKA集群中的数据进行处理整合,处理整合需要按照一定规则进行,而该一定规则是基于实时业务需求和离线业务范围确定的。例如,若业务数据是轨道交通系统中实时采集的线路行车日志数据然后存入所述KAFKA集群,而实时业务需求是分析挖掘早晚点列车的信息,离线业务范围包括统计列车故障原因和客流情况分析,那么该一定规则需要将晚点列车作为查询条件从KAFKA集群中存储的数据中抽取早晚点列车的所有相关信息,还需要将列车故障和客流分人数区间均作为查询条件从KAFKA集群中存储的数据中抽取列车故障信息和客流信息,上述涉及指定查询条件的抽取、转换和维度关联均属于细粒度的处理整合;KAFKA集群中的其他数据可以按照未来可能扩展的离线业务进行粗粒度的抽取、转换和维度关联操作,为将来可能扩展的离线业务提前先准备好对应的明细数据,虽然粒度比较粗,可以在将来需要使用的时候进一步抽取,总体而言将处理整合连着实时业务一起提前完成,可以从全局上降低计算量,避免相同数据的处理整合进行多次。因此,第一明细数据是对应于当前进行的实时业务需要的相关数据,而第二明细数据包括KAFKA集群中拉取的所有数据,只是都按照统一的处理整合生成了第二明细数据,第二明细数据中除了包括对应当前存在的离线业务需要的相关数据,还包括粒度更粗的对应与可能未来会扩展出来的离线业务需要的相关数据,所以用离线业务范围概括当前存在的离线业务和将来可能会扩展出来的离线业务。
此处需要说明的是,第一明细数据和第二明细数据是结构统一的明细宽表数据,不同点只是,第一明细数据会被以流式数据形式存储于KAFKA集群中形成KAFKA实时明细宽表,以供后续的实时业务直接拉取进行对应的分析和挖掘,而第二明细数据会被分离批量至数据库中,形成数据库明细宽表,以供后续的离线业务直接拉取进行对应的分析和挖掘。
步骤230,对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。
可选地,第一明细数据直接被作为消费者的实时业务拉取出来进行消费,以实时业务对应的分析和挖掘对第一明细数据进行处理,而第二明细数据存储为数据库明细宽表,等待对应的离线业务在预设时间对其进行拉取,以该离线业务对应的分析和挖掘对拉取的第二明细数据进行处理。即通过统一的处理整合生成明细数据后,就进入分支流程,一个分支对应实时业务,实时拉取流式第一明细数据进行实时业务的分析和挖掘,另一个分支对应离线业务,将第二明细数据分离批次存储于数据库中形成数据库明细宽表,等待离线业务对应的分析时刻,离线业务对数据库中存储的数据库明细宽表拉取后进行分析挖掘。
本发明提供的方法,通过将实时采集的业务数据写入KAFKA集群;基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。由于将实时业务和离线业务中对采集数据进行处理整合的步骤进行合并统一,避免了开发两套程序分别对实时业务和离线业务进行采集数据中部分数据处理整合的重复,实时业务中采集的数据经过处理整合后可以直接存储于数据库明细宽表中,避免离线业务需要用到同一数据时又进行一次处理整合,而离线业务的整合处理也合并到实时业务的整合处理中,避免了开发两套分别针对于实时业务和离线业务的接入处理的程序,节约了开发成本,且统一了实时业务和离线业务中对接入数据处理整合的形式结构。因此,本发明提供的方法,避免了部分数据重复接入处理的冗余计算,且只需要开发一套程序对实时分析挖掘和离线分析挖掘的数据进行统一接入处理,降低了分析挖掘功能的开发时间成本,且使得实时业务和离线业务的接入数据处理整合后的形式结构统一。
基于上述实施例,该方法中,所述基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据,包括:
基于实时业务需求和离线业务范围确定数据处理整合后的属性维度;
基于所述属性维度对所述KAFKA集群中的数据进行抽取、转换和维度关联操作,得到处理整合后的明细数据;
从所述明细数据中筛选出所述实时业务对应的第一明细数据,且从所述明细数据中筛选出所述离线业务范围对应的第二明细数据。
可选地,进一步限定如何根据实时业务的需求和离线业务的范围对所述KAFKA集群中的数据进行处理整合,限定处理整合规则如何根据实时业务需求和离线业务范围确定。在本发明提供的对实时业务采集的数据和离线业务采集的数据进行统一的处理整合功能中,处理整合功能还需要根据实时业务需求和离线业务范围确定,还是以业务数据为轨道交通系统中的行车日志数据进行说明,若实时业务要实时确定正在所有正在运行列车的早晚点情况,那么需要提取的相关数据的属性维度包括行车日志数据、车站维度表和站台维度表,如此才能将每个早晚点列车的早晚点情况具体下发到对应的车站和站台,因此,在确定了实时业务需求为在对应车站站台实时播报列车早晚点信息后,即可以确定该实时业务对应的处理整合后的属性维度为行车日志数据、车站维度表和站台维度表,那么处理整合过程中的抽取、转换和维度关联操作则可以按照需要的行车日志数据、车站维度表和站台维度表确定设定对应的抽取查询条件,关联方式和整合形成的明细数据的视图表形式。同理,对于离线业务,也是先确定离线业务的定数据处理整合后的属性维度,若离线业务为基于年、月、天、车站和车辆等维度统计晚点车数,那么对应的属性维度则是列车行车日志数据、车站维度表、站台维度表,对应的整合处理过程中的抽取、转换和维度关联操作则可以按照需要的行车日志数据、车站维度表和站台维度表确定设定对应的抽取查询条件(例如A车次某一月的晚点情况、B车次某年在某站台的晚点情况)、关联方式和整合形成的明细数据的视图表形式。
KAFKA集群中的数据按照实时业务需求和离线业务范围确定的处理整合规则进行了抽取、转换和维度关联的操作之后,得到明细数据集合,再从所述明细数据集合中挑出实时业务马上要用上的第一明细数据,从所述明细数据集合中挑出会被当前存在的离线业务在将来对应时刻用上的确定离线明细数据和会被未来可能扩展出的新离线业务用上的疑似离线明细数据组合成第二明细数据,为已经存在和未来新扩展的离线业务提供已经处理整合好的明细数据,节省离线业务分析与挖掘的步骤。第一明细数据是对应于当前进行的实时业务需要的相关数据,而第二明细数据包括KAFKA集群中拉取的所有数据,只是都按照统一的处理整合生成了第二明细数据,第二明细数据中除了包括对应当前存在的离线业务需要的相关数据,还包括粒度更粗的对应与可能未来会扩展出来的离线业务需要的相关数据,所以用离线业务范围概括当前存在的离线业务和将来可能会扩展出来的离线业务。
基于上述实施例,该方法中,基于所述属性维度确定所述抽取操作的抽取条件,基于所述属性维度确定所述转换操作中目标数据对应的关联数据的类型,所述维度关联操作用于生成关联整合后的数据的视图表。
可选地,进一步限定处理整合中的抽取、转换和维度关联操作的具体动作。抽取操作首先要确定的就是抽取数据对象,因此,需要根据属性维度找到目标数据对象的查询条件,然后以该查询条件构去KAFKA集群中的流式大数据中抽取目标数据对象,转换操作中需要基于所述属性维度确定所述转换操作中目标数据对应的关联数据的类型,维度关联操作用于生成关联整合后的数据的视图表。下面还是以业务数据为轨道交通系统中的行车日志数据为例进行说明,以确定一个在对应车站站台实时播报列车早晚点信息的实时业务的处理整合规则进行说明:首先,对行车日志过抽取出早晚点schedulediff(为3位晚点、4位严重晚点)和到站标识trainarrflg(1表示列车到站停稳、3表示列车离站)数据;其次,抽取后的数据与车站维度表、站台维度表jion关联,获取统一明细数据;最后,将整合形成统一的明细数据存储于tmp_trainlog_with视图表。
基于上述实施例,该方法中,所述基于所述属性维度对所述KAFKA集群中的数据进行抽取、转换和维度关联操作,得到处理整合后的明细数据,包括:
基于预设Web流式平台上人工编写的目标脚本语句控制Flink计算框架对所述KAFKA集群中的数据进行抽取、转换和维度关联处理,得到处理整合后的明细数据;
其中,所述目标脚本语句为包括所述抽取、转换和维度关联处理的指令的SQL语句,其被所述预设Web流式平台打包上传至所述Flink计算框架,以供所述Flink计算框架转换成Flink语句执行。
具体地,现有技术中由于对离线业务和实时业务是分开处理的,因此,对于各自的抽取、转换、维度关联整合为明细数据阶段,离线业务中使用的离线批处理存储计算框架是MapReduce、Spark、Hive等,实时业务中使用的计算框架是Storm、Flink等。不同于现有技术,本发明基于自己搭建的预设Web流式平台定义表结构脚本,只要根据Flink语法规则定义即可绑定并关联KAFKA主题数据,实现对KAFKA行车主题数据实时监控并获取的效果。具体地,开发人员在预设Web流式平台上通过新建处理整合任务针对特定实时业务中的抽取、转换和维度关联操作进行能够实施该操作代码的编写,得到目标脚本语言,对于编辑好的目标脚本语言,所述预设Web流式平台会对其进行打包上传至Flink计算框架,Flink计算框架将解包后得到的脚本语言转换成Flink语言然后执行其中的指令,该指令包括对KAFKA集群中的对应数据进行抽取、转换和维度关联,形成明细数据。其中,所述预设Web流式平台对目标脚本语句进行打包的过程包括Web流式平台的后台系统自动对目标脚本语句封装并转换为Flink框架引擎识别的DAG图。上述内容具体描述了对采集的数据为实时业务和离线业务进行统一的抽取、转换和维度关联处理的实现方法。
基于上述实施例,该方法中,所述预设Web流式平台包括预先绑定并关联的KAFKA集群中的主题数据,以及预先封装的功能模块;
对应地,所述目标脚本语句人工编写的过程,包括:
在基于所述主题数据和所述功能模块形成的处理模版语句上进行人工配置,得到目标脚本语句。
可选地,由于研发人员搭建的预设Web流式平台能够使得开发人员在该平台上使用SQL语句编写脚本,该脚本通过定义表结构的方式实现对KAFKA集群中的大数据的抽取、转换和维度关联操作,而所述预设Web流式平台只要根据Flink语法规则定义即可绑定并关联KAFKA主题数据,实现对KAFKA行车主题数据实时监控并获取的效果。开发人员实际在所述预设Web流式平台进行脚本编写时,由于预设Web流式平台上预先绑定并关联的KAFKA集群中的主题数据,且集成了预先封装的功能模块,脚本只需要调用处理模版语句后写入配置信息即可得到目标脚本语句。本发明实施例提供了一种预设Web流式平台搭建过程中的一种优化平台的方式,通过封装功能模块和绑定关联KAFKA主题可以使得平台上存在处理模版语句以供开发人员对模版语句直接进行拼接配置即可完成目标脚本语句,降低开发人员编码的工作量。
基于上述实施例,该方法中,所述从所述明细数据中筛选出所述实时业务对应的第一明细数据,包括:
从所述明细数据中筛选出所述实时业务对应的第一明细数据;
创建KAFKA实时明细宽表,将所述第一明细数据导入所述KAFKA实时明细宽表,以供后续进行所述实时业务的分析处理。
可选地,将得到的明细数据中被实时业务使用的明细数据作为第一明细数据,对于实时业务,本发明的方案是基于KAFKA存储实时数据源,即限定第一明细数据的存储形式,直接存储于已有的KAFKA集群的实时明细宽表中,基于kafka存储实时数据源应配置对应连接器应为upsert-kafka类型,以便该表支持对数据的读写操作。以前文中的业务数据是轨道交通系统中实时采集的线路行车日志数据然后存入所述KAFKA集群,而实时业务需求是分析挖掘早晚点列车的信息为例,首先进行KAFKA集群中大数据的拉取、转换和维度关联操作,图3为本发明提供的抽取行车实时日志表结构的操作指令脚本示意图,如图3所示,创建的ods_trainlog表结构需根据kafka主题数据结构和字段类型而定,其中创建的connector连接器为kafka类型,表关联绑定的kafka主题名称为ods_trainlog;为了再构建明细宽表,除了以上ods_trainlog实时的行车日志数据表,本发明方法需提前构建DIM维度表,维度表维度数据可根据需要存储在诸如MySQL结构化数据库中。图4为本发明提供的创建车站和站台维度表的操作指令脚本示意图,图4左右两边的脚本语言分别为车站维度表和站台维度表,本发明的方案以构建行车日志明细数据宽表所需要的DIM维度表为例说明,维度表数据存储与JDBC类型库,表字段数量和类型必须与JDBC库中一一对应,具体详细脚本如图4所示。
统一前期数据的整合中,现有技术提供的离线业务和实时业务的方案在数据前期的抽取、转换、关联阶段,对应离线业务需求和实时业务需求各自都基于独立一套程序去实现。相比现有技术中的方案,本发明只需基于FlinkSQL脚本开发,即可统一实现对前期数据整合,并形成统一明细宽表数据。图5为本发明提供的行车明细视图表数据形成过程的实现指令脚本示例图,如图5所示,本发明对前期数据的抽取、转换、整合阶段统一处理的操作过程如下:
首先,对行车日志过抽取出早晚点schedulediff(为3位晚点、4位严重晚点)和到站标识trainarrflg(1表示列车到站停稳、3表示列车离站)数据;其次,抽取后的数据与车站维度表、站台维度表jion关联,获取统一明细数据;最后,将整合形成统一的明细数据存储于tmp_trainlog_with视图表。
图6为本发明提供的KAFKA实时宽表创建、晚点车辆数据生成与导入过程的实现指令脚本示例图,如图6所示,基于kafka存储实时数据源应配置对应连接器应为upsert-kafka类型,以便该表支持对数据的读写操作;根据当前行车日志实时业务需求为每分钟晚点车辆数量的实时统计,因此使用TUMBLE滑动窗口分开窗口数据,同时为保证数据唯一性,本例子设置PRIMARY KEY为time_window_start、time_window_end、trainid、servenumber和ordernumber。
基于上述实施例,该方法中,所述从所述明细数据中筛选出所述离线业务范围对应的第二明细数据,包括:
从所述明细数据中筛选出所述离线业务范围对应的第二明细数据;
创建离线实时明细宽表,将所述第二明细数据导入所述离线实时明细宽表,以供后续进行所述离线业务的分析处理;
其中,所述离线实时明细宽表为HIVE实时明细宽表或HDFS实时明细宽表。
可选地,对于对应于离线业务范围的第二明细数据,先在指定数据库中创建对应的离线明细宽表,然后将第二明细数据会被分离批量存入数据库中的离线明细宽表中,此处将指定数据库的类型限定为HIVE或HDFS。接着上文中提到的列车行车日志数据作为业务数据的例子中,图7为本发明提供的基于HIVE创建明细宽表并导入晚点车辆数据的实现指令脚本示例图,如图7所示,对于行车离线数据分析与挖掘业务需求,可分离批量数据至HIVE或者HDFS存储。当前行车日志离线的业务需求是基于年、月、天、车站、车辆等维度统计晚点车数。该方法只需基于HIVE连接器配置脚本,按天分区设置,即可实现每日行车明细数据存储于HIVE分区表,完成行车离线业务所需的数据进行分流。
基于上述实施例,本发明提供一种基于批流一体化大数据技术对轨道交通行车日志数据统一采集与整合方法,图8为本发明提供的基于批流一体化大数据技术对轨道交通行车日志数据统一采集与整合方法的流程示意图,如图8所示,该流程包括如下步骤:1、实时监控并采集轨道交通线路行车日志数据并写入KAFKA集群;2、基于自研Web流式平台开发Flink脚本实时消费KAFKA行车日志主题接入数据;3、统一前期数据的整合。基于FlinkSQL脚本统一抽取、转换、维度关联整合数据,形成统一明细数据;4、离线业务数据与实时业务数据分离。对整合后的明细数据分别写入HIVE/HDFS与KAFKA,实时业务需求数据分析与挖掘基于KAFKA数据源、离线业务需求数据分析与挖掘基于HIVE/HDFS。相比现有技术中的方法,本发明方法能提供统一的方式采集接入与整合离线业务需求的数据和实时业务需求的数据,基于自研Web平台开发,只需提供一套SQL脚本即可实现统一采集数据和构建明细宽表数据。
下面对本发明提供的基于大数据技术的实时与离线业务统一处理装置进行描述,下文描述的基于大数据技术的实时与离线业务统一处理装置与上文描述的一种基于大数据技术的实时与离线业务统一处理方法可相互对应参照。
图9为本发明提供的基于大数据技术的实时与离线业务统一处理装置的结构示意图,如图9所示,该装置包括写入单元910、统一整合单元920和分支单元930,其中,
所述写入单元910,用于将实时采集的业务数据写入KAFKA集群;
所述统一整合单元920,用于基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;
所述分支单元930,用于对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。
本发明提供的装置,通过将实时采集的业务数据写入KAFKA集群;基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。由于将实时业务和离线业务中对采集数据进行处理整合的步骤进行合并统一,避免了开发两套程序分别对实时业务和离线业务进行采集数据中部分数据处理整合的重复,实时业务中采集的数据经过处理整合后可以直接存储于数据库明细宽表中,避免离线业务需要用到同一数据时又进行一次处理整合,而离线业务的整合处理也合并到实时业务的整合处理中,避免了开发两套分别针对于实时业务和离线业务的接入处理的程序,节约了开发成本,且统一了实时业务和离线业务中对接入数据处理整合的形式结构。因此,本发明提供的装置,避免了部分数据重复接入处理的冗余计算,且只需要开发一套程序对实时分析挖掘和离线分析挖掘的数据进行统一接入处理,降低了分析挖掘功能的开发时间成本,且使得实时业务和离线业务的接入数据处理整合后的形式结构统一。
基于上述实施例,该装置中,所述统一整合单元,具体用于:
基于实时业务需求和离线业务范围确定数据处理整合后的属性维度;
基于所述属性维度对所述KAFKA集群中的数据进行抽取、转换和维度关联操作,得到处理整合后的明细数据;
从所述明细数据中筛选出所述实时业务对应的第一明细数据,且从所述明细数据中筛选出所述离线业务范围对应的第二明细数据。
基于上述实施例,该装置中,
基于所述属性维度确定所述抽取操作的抽取条件,基于所述属性维度确定所述转换操作中目标数据对应的关联数据的类型,所述维度关联操作用于生成关联整合后的数据的视图表。
基于上述实施例,该装置中,所述基于所述属性维度对所述KAFKA集群中的数据进行抽取、转换和维度关联操作,得到处理整合后的明细数据,包括:
基于预设Web流式平台上人工编写的目标脚本语句控制Flink计算框架对所述KAFKA集群中的数据进行抽取、转换和维度关联处理,得到处理整合后的明细数据;
其中,所述目标脚本语句为包括所述抽取、转换和维度关联处理的指令的SQL语句,其被所述预设Web流式平台打包上传至所述Flink计算框架,以供所述Flink计算框架转换成Flink语句执行。
基于上述实施例,该装置中,所述预设Web流式平台包括预先绑定并关联的KAFKA集群中的主题数据,以及预先封装的功能模块;
对应地,所述目标脚本语句人工编写的过程,包括:
在基于所述主题数据和所述功能模块形成的处理模版语句上进行人工配置,得到目标脚本语句。
基于上述实施例,该装置中,所述从所述明细数据中筛选出所述实时业务对应的第一明细数据,包括:
从所述明细数据中筛选出所述实时业务对应的第一明细数据;
创建KAFKA实时明细宽表,将所述第一明细数据导入所述KAFKA实时明细宽表,以供后续进行所述实时业务的分析处理。
基于上述实施例,该装置中,所述从所述明细数据中筛选出所述离线业务范围对应的第二明细数据,包括:
从所述明细数据中筛选出所述离线业务范围对应的第二明细数据;
创建离线实时明细宽表,将所述第二明细数据导入所述离线实时明细宽表,以供后续进行所述离线业务的分析处理;
其中,所述离线实时明细宽表为HIVE实时明细宽表或HDFS实时明细宽表。
图10为本发明提供的一种电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(Communications Interface)1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行基于大数据技术的实时与离线业务统一处理方法,该方法包括:将实时采集的业务数据写入KAFKA集群;基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于大数据技术的实时与离线业务统一处理方法,该方法包括:将实时采集的业务数据写入KAFKA集群;基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于大数据技术的实时与离线业务统一处理方法,该方法包括:将实时采集的业务数据写入KAFKA集群;基于实时业务需求和离线业务范围对所述KAFKA集群中的数据进行处理整合,得到所述实时业务的第一明细数据和所述离线业务范围对应的第二明细数据;对所述第一明细数据进行所述实时业务对应的分析处理,所述第二明细数据用于后续所述离线业务于预设时刻进行对应的分析处理。
以上所描述的服务器实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。