CN107544984A - 一种数据处理的方法和装置 - Google Patents
一种数据处理的方法和装置 Download PDFInfo
- Publication number
- CN107544984A CN107544984A CN201610479712.5A CN201610479712A CN107544984A CN 107544984 A CN107544984 A CN 107544984A CN 201610479712 A CN201610479712 A CN 201610479712A CN 107544984 A CN107544984 A CN 107544984A
- Authority
- CN
- China
- Prior art keywords
- data
- catalogue
- under
- record
- tables
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据处理的方法和装置。本发明的数据处理的方法包括:接入处理,按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;合并处理,与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;查询处理,当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
Description
技术领域
本发明涉及计算机和计算机软件技术领域,特别地涉及一种数据处理的方法和装置。
背景技术
数据分析是指用适当的分析方法对收集的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。在实际应用中,数据分析可帮助人们作出判断,以便采取适当行动。
由于收集到的数据一般保存在数据仓库中,故而数据仓库是进行业务分析和决策的基础。数据仓库是数据研发人员使用的数据的集合。收集到的数据保存在数据仓库之后,数据研发人员再对数据仓库中保存的数据使用Hive进行数据关联、分析以及挖掘。
数据集市是在数据仓库的基础上,供业务方查询分析使用的一种特殊数据仓库。并且,数据集市中的数据是在数据仓库离线抽取数据之后,每天定时推送过来的。
通常,现有的对数据进行分析处理的方法是每天凌晨定时抽取线上数据库表的全量数据或者是昨天的增量数据写入数据仓库,存储在分布式文件系统HDFS上,然后通过程序配置周期任务将数据从数据仓库的HDFS同步至数据集市的HDFS。由于现有的数据收集方法是第二天才可汇总前一天的所有数据,因此最终数据集市中的数据与线上表的数据有一天的延迟。
数据被汇总到数据集市中后,数据研发人员例如使用Hive对HDFS上的离线数据进行后续分析处理,并使用storm技术进行实时指标的计算。
使用现有的方案进行数据的分析处理,会存在以下问题:
1、离线数据仓库延迟性比较高,时间延迟为T+1天。离线数据仓库在数据抽取完成之后再将数据推送至数据集市,延迟性比离线数据仓库还要高。因此,对于一些实时性要求比较高的需求无法满足,例如:订单风控需求(如果快速识别出刷单行为,可以在一定程度上降低物流成本);
2、目前数据集市延迟性比较大,各个研发线数据分析人员拿到的数据为昨天的数据,对于正在生产的数据情况无处查询;
3、相对于比较复杂的业务分析,storm实时指标计算程序开发成本较大,而且不易于维护。
发明内容
有鉴于此,本发明提供一种数据处理的方法和装置,尽可能快地把线上数据更新到数据集市,能够保证数据处理的实时性,使数据分析人员及时掌握线上数据的动态。
为实现上述目的,根据本发明的一个方面,提供了一种数据处理的方法。
一种数据处理的方法,包括:接入处理,按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;合并处理,与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;查询处理,当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
可选地,所述接入频率被最大化,所述合并频率根据集群资源和应用的情况设定。
可选地,利用kafka实现所述接入处理,并且,所述接入处理包括:将kafka自定义格式编码的数据解析为文本格式的数据;设置所述数据在所述分布式文件系统中保存的目录结构以及字段格式;配置将数据从kafka写入分布式文件系统的执行规则,并按照所述执行规则将数据保存到所述分布式文件系统的第一目录下。
可选地,所述线上数据记录包括对应数据表的主键、消息ID、当前操作时间戳、操作类型和当前操作的字段集合。
可选地,在所述合并处理中,按照数据表的主键对所述第一目录下新增的数据记录和所述第二目录下的先前数据记录进行分组,并且在各组中取各字段时间戳最大且不为空的数据,组合成当前的数据记录并写入所述第二目录下的相应数据表中。
可选地,利用Map-reduce实现所述合并处理,Map端把所述第一目录下新增的数据记录和所述第二目录下的先前数据记录按照数据表的主键进行数据的分发,并按照所述数据的时间戳进行排序;reduce端按照所述数据表的主键进行分组,获取数据表中每个字段的时间戳最新并且不为空的数据,并根据不同的数据操作类型进行数据更新,其中,对“插入”和“更新”操作类型的数据进行合并取最新值,对“删除”操作类型的数据进行删除。
根据本发明的另一方面,提供了一种数据处理的装置。
一种数据处理的装置,包括:接入处理模块,用于按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;合并处理模块,用于与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;查询处理模块,用于当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
可选地,所述接入频率被最大化,所述合并频率根据集群资源和应用的情况设定。
可选地,利用kafka实现所述接入处理,并且,所述接入处理模块还用于:将kafka自定义格式编码的数据解析为文本格式的数据;设置所述数据在所述分布式文件系统中保存的目录结构以及字段格式;配置将数据从kafka写入分布式文件系统的执行规则,并按照所述执行规则将数据保存到所述分布式文件系统的第一目录下。
可选地,所述线上数据记录包括对应数据表的主键、消息ID、当前操作时间戳、操作类型和当前操作的字段集合。
可选地,所述合并处理模块还用于:按照数据表的主键对所述第一目录下新增的数据记录和所述第二目录下的先前数据记录进行分组,并且在各组中取各字段时间戳最大且不为空的数据,组合成当前的数据记录并写入所述第二目录下的相应数据表中。
可选地,所述合并处理模块利用Map-reduce实现所述合并处理,Map端把所述第一目录下新增的数据记录和所述第二目录下的先前数据记录按照数据表的主键进行数据的分发,并按照所述数据的时间戳进行排序;reduce端按照所述数据表的主键进行分组,获取数据表中每个字段的时间戳最新并且不为空的数据,并根据不同的数据操作类型进行数据更新,其中,对“插入”和“更新”操作类型的数据进行合并取最新值,对“删除”操作类型的数据进行删除。
根据本发明的又一方面,提供了一种数据处理的装置。
一种数据处理的装置,包括:存储器和处理器,其中,所述存储器存储指令;所述处理器执行所述指令用于:接入处理,按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;合并处理,与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;查询处理,当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
可选地,所述接入频率被最大化,所述合并频率根据集群资源和应用的情况设定。
可选地,所述处理器利用kafka实现所述接入处理,并且,所述接入处理包括:将kafka自定义格式编码的数据解析为文本格式的数据;设置所述数据在所述分布式文件系统中保存的目录结构以及字段格式;配置将数据从kafka写入分布式文件系统的执行规则,并按照所述执行规则将数据保存到所述分布式文件系统的第一目录下。
可选地,所述线上数据记录包括对应数据表的主键、消息ID、当前操作时间戳、操作类型和当前操作的字段集合。
可选地,所述处理器在所述合并处理中,按照数据表的主键对所述第一目录下新增的数据记录和所述第二目录下的先前数据记录进行分组,并且在各组中取各字段时间戳最大且不为空的数据,组合成当前的数据记录并写入所述第二目录下的相应数据表中。
可选地,所述处理器利用Map-reduce实现所述合并处理,Map端把所述第一目录下新增的数据记录和所述第二目录下的先前数据记录按照数据表的主键进行数据的分发,并按照所述数据的时间戳进行排序;reduce端按照所述数据表的主键进行分组,获取数据表中每个字段的时间戳最新并且不为空的数据,并根据不同的数据操作类型进行数据更新,其中,对“插入”和“更新”操作类型的数据进行合并取最新值,对“删除”操作类型的数据进行删除。
根据本发明的技术方案,通过kafka将线上数据库表的数据实时同步至HDFS中,并通过Map-reduce周期性合并camus实时保存到HDFS目录下的数据日志,以数据表的主键为key从所有日志记录中分别取每个字段最近时间戳的数据,合并处理以得到各数据字段的最新值,从而实现了搭建实时数据集市;通过Hive view每次查询的时候对Map-reduce处理过的文件和实时保存至HDFS的数据文件进行合并merge以保证HDFS中的数据与线上业务数据延迟在分钟级别,从而保证了数据的实时性,使数据分析人员及时掌握线上数据的动态。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的数据处理的方法的主要步骤示意图;
图2是本发明实施例的实现原理示意图;
图3是根据本发明一个实施例的数据处理的装置的主要模块示意图;
图4是根据本发明另一实施例的数据处理的装置的主要模块示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的数据处理的方法的主要步骤示意图。如图1所示,本发明的数据处理的方法主要包括如下的步骤S11至步骤S13。
步骤S11:接入处理,按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;
步骤S12:合并处理,与接入处理相独立,按设定的合并频率,周期性地读取第一目录下保存的数据表中新增的数据记录,并与保存在分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当第二目录下的数据表被更新后,记录当前时间作为最新更新时间;
步骤S13:查询处理,当接收到数据查询请求,把第二目录下的数据表与第一目录下在最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行数据查询请求的处理。
为了保证实时性,应该尽可能频繁地执行接入处理和合并处理,所述接入频率被最大化,例如所述接入频率可以是分钟级别的;所述合并频率根据集群资源和应用的情况设定,也应尽量设置在分钟级别。
所述线上数据记录包括对应数据表的主键、消息ID、当前操作时间戳、操作类型和当前操作的字段集合。
根据本发明的实施例,本发明是利用kafka实现所述接入处理。并且,所述接入处理包括:
将kafka自定义格式编码的数据解析为文本格式的数据;
设置所述数据在所述分布式文件系统中保存的目录结构以及字段格式;
配置将数据从kafka写入分布式文件系统的执行规则,并按照所述执行规则将数据保存到所述分布式文件系统的第一目录下。
根据本发明的技术方案,在所述合并处理中,按照数据表的主键对所述第一目录下新增的数据记录和所述第二目录下的先前数据记录进行分组,并且在各组中取各字段时间戳最大且不为空的数据,组合成当前的数据记录并写入所述第二目录下的相应数据表中。
本发明中,利用Map-reduce实现所述合并处理,Map端把所述第一目录下新增的数据记录和所述第二目录下的先前数据记录按照数据表的主键进行数据的分发,并按照所述数据的时间戳进行排序;reduce端按照所述数据表的主键进行分组,获取数据表中每个字段的时间戳最新并且不为空的数据,并根据不同的数据操作类型进行数据更新,其中,对“插入”和“更新”操作类型的数据进行合并取最新值,对“删除”操作类型的数据进行删除。
图2是本发明实施例的实现原理示意图。为了解决现有技术中的问题,本发明通过搭建实时数据集市的方法,对后续业务方大数据分析提供实时的数据支持,从而将数据延迟时间降低至近似为T+0。
该实施例中,为了保证数据查询的实时性,需要构建实时数据集市的底层任务处理,以将线上数据表的最新状态还原出来,然后再通过Hive实时获取数据查询结果。
图2示出本发明的特定实施例的示意性流程。下面详细解释有关的步骤。
步骤1:线上关系型数据库表接入
此步骤是整个架构的基础,主要功能是将线上数据库表的操作日志实时同步下来,以便后续过程的继续处理。根据本发明的实施例,采用kafka实时对接线上数据操作日志。类似地,本发明也可采用MQ消息队列来实现数据的接入处理。
为不影响线上业务,kafka在对接线上关系型数据库表的数据时,可通过直接接收线上数据库表的操作日志,且使每张表对应一个主题topic,topic中数据为线上数据表操作语句的json串。假设线上数据库表的其中一行代码如下:
{"mid":13704417646,"db":"Peking","sch":"dbo","tab":"invoice_table","opt":"INSERT","ts":1440738504814,"ddl":null,"err":null,"src":null,"cur":{"ivc_bankcode":"″,"Pop_yn":"0","orderId":"9974822144","Ivc_gzsj":"0"}}
其中,各个字段的释义如下:“mid”为当前接入消息的计数ID;“db”为当前消息所属的数据库名称;“sch”是当前记录所属表的架构;“tab”是当前记录所属表的名称;“opt”是当前记录做的什么操作,即操作类型INSERT、UPDATE、DELETE等;“ts”是当前记录的操作时间戳;“ddl”是当前记录的操作语句;“err”是错误信息;“src”是这条记录发生前的的信息;“cur”是这条记录当前操作的所有字段,也就是更新了哪些或者插入了哪些字段。
步骤2:日志解析存储
根据步骤1中的方法将线上数据接入kafka之后,将执行解析kafka的日志数据,同时将日志数据实时的存储在分布式文件系统HDFS的目录中。后续的数据处理的操作都是在HDFS的目录中进行的。
由于目前kafka里存的数据为avro格式,与分布式文件系统HDFS中数据的保存格式不同,因此,需要将avro格式的数据解析为文本格式。本发明通过扩展com.linkedin.camus.coders.MessageDecoder方法来实现解析kafka自定义格式编码的数据为文本格式。
之后,通过实现com.linkedin.camus.etl.RecordWriterProvider接口,设置数据写入HDFS的目录以及字段格式。例如,根据需要可设置线上数据写入HDFS的目录结构为“数据库/表/日期/小时/文件名”;字段格式根据各字段的数据类型进行设置。其中,多个字段以“\t”分隔。在本实施例中,设定第一个字段为关系型数据表的主键primary_key,第二个字段为kafka消息ID,第三个字段为当前操作的消息时间戳,第四个字段为操作类型,最后为当前行为操作的字段列表。
以如下一段代码为例:
其中,“hadoop fs-cat”是Hadoop的命令,作用是读取后面目录的文件;“/user/xxx/afs/afs_message/20160221/2016022113/16782.0.4554.566212647.1456030800000”是读取的文件的目录;“tail-1”是取最后一行进行示例展示;第一个字段“708502401”为关系型数据表的主键primary_key;第二个字段“1658943077”为kafka消息ID;第三个字段“1456033531517”为当前操作的消息时间戳;第四个字段“INSERT”为操作类型;最后,其他的内容即为当前操作的字段集合及相应字段的值。
最后,通过camus将数据从kafka导入HDFS中。配置camus执行计划:第一步,配置camus的配置文件,让它一次性可以抽取一个数据库多个表的数据。第二步,配置调度任务,周期为5分钟执行一次。这样可以实现周期性的从线上数据表进行数据抽取写入数据集市的HDFS。待camus执行完,数据即可直接保存在HDFS的目录A中。其中,在配置camus的数据抽取周期时,应考虑需大于一次性将多个表中的数据抽取完成的时间,以保证每次执行camus后都能将新增的线上数据完整导入HDFS中。
步骤3:数据合并去重
根据步骤2所述的方法将线上数据实时同步到HDFS的目录A之后,此时数据格式为整行记录的部分字段。步骤3将还原出每个表整行记录的所有字段,并且按照数据表的主键进行去重。
针对每个数据表配置对应的调度任务,主要功能为按照数据表的主键合并日志记录,由于操作日志不一定会更新全部字段,需要取每个字段更新时间最近的数据作为最新记录的字段。本发明中,通过Map-reduce实现数据的合并去重。Map端按照目录A中新增的数据记录以及目录B中的先前数据记录的第一个字段(即:数据表主键)进行数据的分发,同时按照消息时间戳进行排序;reduce端按照数据表的主键进行分组groupby,获取每个字段消息时间戳最大并且不为空的数据,对于“插入INSERT”和“更新UPDATE”两个操作类型的数据进行合并取最新值,对于“删除DELETE”操作类型的数据进行删除。当Map-reduce操作执行完成,会还原出线上记录每个字段的最新值。最后,设置将还原出的线上数据的最新状态保存到HDFS的目录B中。
根据上述的步骤1至步骤3,即可将线上数据接入HDFS中,并对数据进行合并处理,从而还原出线上数据的最新状态。也就是说,即可实现构建实时数据集市的底层任务处理的功能。底层任务处理完成之后还原出线上数据表,数据延迟为周期合并的时间,可控制在分钟级别。
底层任务处理完成之后,当业务方的研发人员需要对线上数据进行查询或后续处理时,可通过研发数据分析人员提交Hive SQL查询请求,触发实时提交合并数据的请求,以完成数据的实时查询。
通过在HDFS的目录A上挂载Hive外部表tb_a,tb_a为camus周期性获取kafka数据的外部表,例如,可以小时作为分区。在HDFS目录B挂载Hive外部表tb_b,tb_b为调度任务周期合并的数据最新记录。
根据业务方数据研发人员提交的Hive SQL查询请求,触发实时提交合并数据的请求,从而将tb_a和tb_b的数据进行合并,并以Hive视图tb_c的形式返回。数据分析人员直接操作tb_c即可进行后续数据的分析处理。
以如下代码为例:
其中,$time为当前调度任务合并的时间周期,即tb_b的周期间隔;通过union all(Union All,对两个结果集进行并集操作,重复数据全部显示)将tb_b中的数据和tb_a中在tb_b的最新更新时间之后新增加的数据记录合并,以得到tb_c。
业务方数据研发人员通过每次查询tb_c即可拿到当前表的实时数据,延迟为camus执行数据拉取的时间周期。
由于camus执行数据拉取以数据库为最小单位,而查询处理时的数据合并任务以每张表为最小粒度。在集群资源充足的情况下,尽可能地提高接入处理的频率(即camus数据拉取频率)和合并去重处理的频率,以便在采用Hive视图方式执行实时查询时可以将数据延迟时间尽量缩短;在集群资源不是很充足的情况下,由于每张表周期合并去重的任务占用的系统资源较多,因此可通过提高接入处理的频率,即camus数据拉取频率,降低每张表周期合并去重处理的频率,同时采用Hive视图方式执行实时查询,以保证集市数据与线上业务数据延迟在分钟级别。
根据如上所述的技术方案,即可实现通过搭建实时数据集市,对后续业务方大数据分析提供实时的数据支持,从而将数据延迟时间降低至近似为T+0。
图3是根据本发明一个实施例的数据处理的装置的主要模块示意图。如图3所示,本发明的数据处理的装置30主要包括接入处理模块31、合并处理模块32和查询处理模块33。
其中,接入处理模块31用于按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;合并处理模块32用于与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;查询处理模块33用于当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
其中,所述接入频率被最大化,所述合并频率根据集群资源和应用的情况设定。
所述线上数据记录包括对应数据表的主键、消息ID、当前操作时间戳、操作类型和当前操作的字段集合。
根据本发明的技术方案,利用kafka实现所述接入处理。并且,所述接入处理模块31还可以用于:将kafka自定义格式编码的数据解析为文本格式的数据;设置所述数据在所述分布式文件系统中保存的目录结构以及字段格式;配置将数据从kafka写入分布式文件系统的执行规则,并按照所述执行规则将数据保存到所述分布式文件系统的第一目录下。
合并处理模块32还可以用于:按照数据表的主键对所述第一目录下新增的数据记录和所述第二目录下的先前数据记录进行分组,并且在各组中取各字段时间戳最大且不为空的数据,组合成当前的数据记录并写入所述第二目录下的相应数据表中。
合并处理模块32利用Map-reduce实现所述合并处理,Map端把所述第一目录下新增的数据记录和所述第二目录下的先前数据记录按照数据表的主键进行数据的分发,并按照所述数据的时间戳进行排序;reduce端按照所述数据表的主键进行分组,获取数据表中每个字段的时间戳最新并且不为空的数据,并根据不同的数据操作类型进行数据更新,其中,对“插入”和“更新”操作类型的数据进行合并取最新值,对“删除”操作类型的数据进行删除。
图4是根据本发明另一实施例的数据处理的装置的主要模块示意图。如图4所示,本发明的数据处理的装置40主要包括存储器41和处理器42。
其中,存储器41存储指令;处理器42执行所述指令用于:接入处理,按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;合并处理,与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;查询处理,当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
其中,所述接入频率被最大化,所述合并频率根据集群资源和应用的情况设定。
处理器42利用kafka实现所述接入处理,并且,所述接入处理包括:将kafka自定义格式编码的数据解析为文本格式的数据;设置所述数据在所述分布式文件系统中保存的目录结构以及字段格式;配置将数据从kafka写入分布式文件系统的执行规则,并按照所述执行规则将数据保存到所述分布式文件系统的第一目录下。
所述线上数据记录包括对应数据表的主键、消息ID、当前操作时间戳、操作类型和当前操作的字段集合。
处理器42在所述合并处理中,按照数据表的主键对所述第一目录下新增的数据记录和所述第二目录下的先前数据记录进行分组,并且在各组中取各字段时间戳最大且不为空的数据,组合成当前的数据记录并写入所述第二目录下的相应数据表中。
处理器42利用Map-reduce实现所述合并处理,Map端把所述第一目录下新增的数据记录和所述第二目录下的先前数据记录按照数据表的主键进行数据的分发,并按照所述数据的时间戳进行排序;reduce端按照所述数据表的主键进行分组,获取数据表中每个字段的时间戳最新并且不为空的数据,并根据不同的数据操作类型进行数据更新,其中,对“插入”和“更新”操作类型的数据进行合并取最新值,对“删除”操作类型的数据进行删除。
根据本发明实施例的技术方案,通过kafka将线上数据库表的数据实时同步至HDFS中,并通过Map-reduce周期性合并camus实时保存到HDFS目录下的数据日志,以数据表的主键为key从所有日志记录中分别取每个字段最近时间戳的数据,合并处理以得到各数据字段的最新值,从而实现了搭建实时数据集市;通过Hive view每次查询的时候对Map-reduce处理过的文件和实时保存至HDFS的数据文件进行合并merge以保证HDFS中的数据与线上业务数据延迟在分钟级别,从而保证了数据的实时性,使数据分析人员及时掌握线上数据的动态。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (13)
1.一种数据处理的方法,其特征在于,包括:
接入处理,按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;
合并处理,与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;
查询处理,当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
2.根据权利要求1所述的方法,其特征在于,所述接入频率被最大化,所述合并频率根据集群资源和应用的情况设定。
3.根据权利要求1所述的方法,其特征在于,利用kafka实现所述接入处理,并且,所述接入处理包括:
将kafka自定义格式编码的数据解析为文本格式的数据;
设置所述数据在所述分布式文件系统中保存的目录结构以及字段格式;
配置将数据从kafka写入分布式文件系统的执行规则,并按照所述执行规则将数据保存到所述分布式文件系统的第一目录下。
4.根据权利要求1所述的方法,其特征在于,所述线上数据记录包括对应数据表的主键、消息ID、当前操作时间戳、操作类型和当前操作的字段集合。
5.根据权利要求4所述的方法,其特征在于,在所述合并处理中,按照数据表的主键对所述第一目录下新增的数据记录和所述第二目录下的先前数据记录进行分组,并且在各组中取各字段时间戳最大且不为空的数据,组合成当前的数据记录并写入所述第二目录下的相应数据表中。
6.根据权利要求5所述的方法,其特征在于,利用Map-reduce实现所述合并处理,
Map端把所述第一目录下新增的数据记录和所述第二目录下的先前数据记录按照数据表的主键进行数据的分发,并按照所述数据的时间戳进行排序;
reduce端按照所述数据表的主键进行分组,获取数据表中每个字段的时间戳最新并且不为空的数据,并根据不同的数据操作类型进行数据更新,其中,对“插入”和“更新”操作类型的数据进行合并取最新值,对“删除”操作类型的数据进行删除。
7.一种数据处理的装置,其特征在于,包括:
接入处理模块,用于按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;
合并处理模块,用于与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;
查询处理模块,用于当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
8.根据权利要求7所述的装置,其特征在于,所述接入频率被最大化,所述合并频率根据集群资源和应用的情况设定。
9.根据权利要求7所述的装置,其特征在于,利用kafka实现所述接入处理,并且,所述接入处理模块还用于:
将kafka自定义格式编码的数据解析为文本格式的数据;
设置所述数据在所述分布式文件系统中保存的目录结构以及字段格式;
配置将数据从kafka写入分布式文件系统的执行规则,并按照所述执行规则将数据保存到所述分布式文件系统的第一目录下。
10.根据权利要求7所述的装置,其特征在于,所述线上数据记录包括对应数据表的主键、消息ID、当前操作时间戳、操作类型和当前操作的字段集合。
11.根据权利要求10所述的装置,其特征在于,所述合并处理模块还用于:
按照数据表的主键对所述第一目录下新增的数据记录和所述第二目录下的先前数据记录进行分组,并且在各组中取各字段时间戳最大且不为空的数据,组合成当前的数据记录并写入所述第二目录下的相应数据表中。
12.根据权利要求11所述的装置,其特征在于,所述合并处理模块利用Map-reduce实现所述合并处理,
Map端把所述第一目录下新增的数据记录和所述第二目录下的先前数据记录按照数据表的主键进行数据的分发,并按照所述数据的时间戳进行排序;
reduce端按照所述数据表的主键进行分组,获取数据表中每个字段的时间戳最新并且不为空的数据,并根据不同的数据操作类型进行数据更新,其中,对“插入”和“更新”操作类型的数据进行合并取最新值,对“删除”操作类型的数据进行删除。
13.一种数据处理的装置,其特征在于,包括:
存储器和处理器,其中,
所述存储器存储指令;
所述处理器执行所述指令用于:
接入处理,按设定的接入频率,周期性地把线上数据记录同步增加至数据集市的分布式文件系统的第一目录下的相应数据表中;
合并处理,与所述接入处理相独立,按设定的合并频率,周期性地读取所述第一目录下保存的数据表中新增的数据记录,并与保存在所述分布式文件系统的第二目录下的相应数据表中的先前数据合并,并且,每当所述第二目录下的数据表被更新后,记录当前时间作为最新更新时间;
查询处理,当接收到数据查询请求,把所述第二目录下的数据表与所述第一目录下在所述最新更新时间之后新增加的数据记录合并,然后在合并的数据上执行所述数据查询请求的处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610479712.5A CN107544984B (zh) | 2016-06-27 | 2016-06-27 | 一种数据处理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610479712.5A CN107544984B (zh) | 2016-06-27 | 2016-06-27 | 一种数据处理的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107544984A true CN107544984A (zh) | 2018-01-05 |
CN107544984B CN107544984B (zh) | 2020-07-31 |
Family
ID=60961852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610479712.5A Active CN107544984B (zh) | 2016-06-27 | 2016-06-27 | 一种数据处理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107544984B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108520040A (zh) * | 2018-04-03 | 2018-09-11 | 浙江泰宁建设工程管理咨询有限公司 | 一种工程监理数据留存方法和系统 |
CN108829543A (zh) * | 2018-06-21 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种减小备份Linux系统日志大小的方法 |
CN109739881A (zh) * | 2018-12-24 | 2019-05-10 | 中电福富信息科技有限公司 | 基于CarbonData的增量数据收敛更新方法及其系统 |
CN109871378A (zh) * | 2019-02-21 | 2019-06-11 | 杭州市商务委员会(杭州市粮食局) | 大数据平台的数据采集和处理方法及系统 |
CN109902105A (zh) * | 2019-02-28 | 2019-06-18 | 携程旅游网络技术(上海)有限公司 | 用于微服务架构的数据查询系统、方法、设备及存储介质 |
CN110008382A (zh) * | 2018-12-26 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种确定TopN数据的方法、系统及设备 |
CN110008236A (zh) * | 2019-04-15 | 2019-07-12 | 重庆天蓬网络有限公司 | 一种数据分布式自增编码方法、系统、设备及介质 |
CN110379043A (zh) * | 2018-08-14 | 2019-10-25 | 北京京东尚科信息技术有限公司 | 信息处理方法、可移动装置和服务器 |
CN110413413A (zh) * | 2019-07-26 | 2019-11-05 | 北京蜜莱坞网络科技有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN110471896A (zh) * | 2019-06-21 | 2019-11-19 | 深圳中琛源科技股份有限公司 | 一种数据处理方法、系统及服务器 |
CN110633332A (zh) * | 2019-09-18 | 2019-12-31 | 北京思维造物信息科技股份有限公司 | 数据仓库、数据更新和调用方法、装置及设备 |
CN110704448A (zh) * | 2019-09-29 | 2020-01-17 | 上海易点时空网络有限公司 | 数据同步方法及装置、服务器 |
CN110704400A (zh) * | 2019-09-29 | 2020-01-17 | 上海易点时空网络有限公司 | 实时数据同步方法以及装置、服务器 |
CN110895534A (zh) * | 2018-08-24 | 2020-03-20 | 北京京东尚科信息技术有限公司 | 一种数据拼接方法、装置、介质及电子设备 |
CN111125149A (zh) * | 2019-12-19 | 2020-05-08 | 广州品唯软件有限公司 | 基于Hive的数据获取方法、装置及存储介质 |
CN111488323A (zh) * | 2020-04-14 | 2020-08-04 | 中国农业银行股份有限公司 | 一种数据处理方法、装置及电子设备 |
CN111694801A (zh) * | 2019-03-14 | 2020-09-22 | 北京沃东天骏信息技术有限公司 | 一种应用于故障恢复的数据去重方法和装置 |
CN113220707A (zh) * | 2021-04-26 | 2021-08-06 | 深圳市云网万店科技有限公司 | 实时合并多种业务指标数据的方法、装置和计算机设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577474A (zh) * | 2012-08-03 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种数据库的更新方法及系统 |
US20140122429A1 (en) * | 2012-10-31 | 2014-05-01 | International Business Machines Corporation | Data processing method and apparatus for distributed systems |
CN104820670A (zh) * | 2015-03-13 | 2015-08-05 | 国家电网公司 | 一种电力信息大数据的采集和存储方法 |
CN104899199A (zh) * | 2014-03-04 | 2015-09-09 | 阿里巴巴集团控股有限公司 | 一种数据仓库数据处理方法和系统 |
US20160162496A1 (en) * | 2014-12-09 | 2016-06-09 | Xurmo Technologies Pvt. Ltd. | Computer implemented system and method for investigative data analytics |
-
2016
- 2016-06-27 CN CN201610479712.5A patent/CN107544984B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577474A (zh) * | 2012-08-03 | 2014-02-12 | 阿里巴巴集团控股有限公司 | 一种数据库的更新方法及系统 |
US20140122429A1 (en) * | 2012-10-31 | 2014-05-01 | International Business Machines Corporation | Data processing method and apparatus for distributed systems |
CN104899199A (zh) * | 2014-03-04 | 2015-09-09 | 阿里巴巴集团控股有限公司 | 一种数据仓库数据处理方法和系统 |
US20160162496A1 (en) * | 2014-12-09 | 2016-06-09 | Xurmo Technologies Pvt. Ltd. | Computer implemented system and method for investigative data analytics |
CN104820670A (zh) * | 2015-03-13 | 2015-08-05 | 国家电网公司 | 一种电力信息大数据的采集和存储方法 |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108520040A (zh) * | 2018-04-03 | 2018-09-11 | 浙江泰宁建设工程管理咨询有限公司 | 一种工程监理数据留存方法和系统 |
CN108829543A (zh) * | 2018-06-21 | 2018-11-16 | 郑州云海信息技术有限公司 | 一种减小备份Linux系统日志大小的方法 |
CN110379043A (zh) * | 2018-08-14 | 2019-10-25 | 北京京东尚科信息技术有限公司 | 信息处理方法、可移动装置和服务器 |
CN110895534A (zh) * | 2018-08-24 | 2020-03-20 | 北京京东尚科信息技术有限公司 | 一种数据拼接方法、装置、介质及电子设备 |
CN109739881A (zh) * | 2018-12-24 | 2019-05-10 | 中电福富信息科技有限公司 | 基于CarbonData的增量数据收敛更新方法及其系统 |
CN109739881B (zh) * | 2018-12-24 | 2022-09-20 | 中电福富信息科技有限公司 | 基于CarbonData的增量数据收敛更新方法及其系统 |
CN110008382A (zh) * | 2018-12-26 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种确定TopN数据的方法、系统及设备 |
CN110008382B (zh) * | 2018-12-26 | 2023-06-16 | 创新先进技术有限公司 | 一种确定TopN数据的方法、系统及设备 |
CN109871378A (zh) * | 2019-02-21 | 2019-06-11 | 杭州市商务委员会(杭州市粮食局) | 大数据平台的数据采集和处理方法及系统 |
CN109902105A (zh) * | 2019-02-28 | 2019-06-18 | 携程旅游网络技术(上海)有限公司 | 用于微服务架构的数据查询系统、方法、设备及存储介质 |
CN111694801A (zh) * | 2019-03-14 | 2020-09-22 | 北京沃东天骏信息技术有限公司 | 一种应用于故障恢复的数据去重方法和装置 |
CN110008236A (zh) * | 2019-04-15 | 2019-07-12 | 重庆天蓬网络有限公司 | 一种数据分布式自增编码方法、系统、设备及介质 |
CN110008236B (zh) * | 2019-04-15 | 2020-08-04 | 重庆天蓬网络有限公司 | 一种数据分布式自增编码方法、系统、设备及介质 |
CN110471896B (zh) * | 2019-06-21 | 2023-11-28 | 陕西融华电子科技有限公司 | 一种数据处理方法、系统及服务器 |
CN110471896A (zh) * | 2019-06-21 | 2019-11-19 | 深圳中琛源科技股份有限公司 | 一种数据处理方法、系统及服务器 |
CN110413413A (zh) * | 2019-07-26 | 2019-11-05 | 北京蜜莱坞网络科技有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN110633332A (zh) * | 2019-09-18 | 2019-12-31 | 北京思维造物信息科技股份有限公司 | 数据仓库、数据更新和调用方法、装置及设备 |
CN110704400A (zh) * | 2019-09-29 | 2020-01-17 | 上海易点时空网络有限公司 | 实时数据同步方法以及装置、服务器 |
CN110704448A (zh) * | 2019-09-29 | 2020-01-17 | 上海易点时空网络有限公司 | 数据同步方法及装置、服务器 |
CN111125149A (zh) * | 2019-12-19 | 2020-05-08 | 广州品唯软件有限公司 | 基于Hive的数据获取方法、装置及存储介质 |
CN111125149B (zh) * | 2019-12-19 | 2024-01-26 | 广州品唯软件有限公司 | 基于Hive的数据获取方法、装置及存储介质 |
CN111488323A (zh) * | 2020-04-14 | 2020-08-04 | 中国农业银行股份有限公司 | 一种数据处理方法、装置及电子设备 |
CN111488323B (zh) * | 2020-04-14 | 2023-06-13 | 中国农业银行股份有限公司 | 一种数据处理方法、装置及电子设备 |
CN113220707A (zh) * | 2021-04-26 | 2021-08-06 | 深圳市云网万店科技有限公司 | 实时合并多种业务指标数据的方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107544984B (zh) | 2020-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107544984A (zh) | 一种数据处理的方法和装置 | |
CN107038162B (zh) | 基于数据库日志的实时数据查询方法和系统 | |
CN110674154B (zh) | 一种基于Spark的对Hive中数据进行插入、更新和删除的方法 | |
CN104899295B (zh) | 一种异构数据源数据关联分析方法 | |
Morgan et al. | Old bottle new wine? The evolution of China’s aid in Africa 1956–2014 | |
CN105138661A (zh) | 一种基于Hadoop的网络安全日志k-means聚类分析系统及方法 | |
CN102917009B (zh) | 一种基于云计算技术的股票数据采集和存储方法和系统 | |
CN110019267A (zh) | 一种元数据更新方法、装置、系统、电子设备及存储介质 | |
CN102640151A (zh) | 信息系统中转换后的数据的高吞吐量、可靠复制 | |
US10002142B2 (en) | Method and apparatus for generating schema of non-relational database | |
CN103699638A (zh) | 一种基于配置参数实现跨数据库类型同步数据的方法 | |
CN106126601A (zh) | 一种社保大数据分布式预处理方法及系统 | |
CN107832291B (zh) | 人机协作的客服方法、电子装置及存储介质 | |
CN110321383A (zh) | 大数据平台数据同步方法、装置、计算机设备及存储介质 | |
US20150039600A1 (en) | Extensible person container | |
CN111651519B (zh) | 数据同步方法、数据同步装置、电子设备及存储介质 | |
CN109376196A (zh) | 一种redo日志批量同步方法及装置 | |
CN113282611B (zh) | 一种流数据同步的方法、装置、计算机设备及存储介质 | |
CN108280056A (zh) | 一种Excel文件解析方法 | |
Silva et al. | Integrating big data into the computing curricula | |
CN111008521A (zh) | 生成宽表的方法、装置及计算机存储介质 | |
CN105550351B (zh) | 旅客行程数据即席查询系统及方法 | |
CN105824892A (zh) | 一种数据池对数据同步和处理的方法 | |
CN109408602A (zh) | 一种大数据综合处理方法及系统 | |
CN111125045B (zh) | 一种轻量级etl处理平台 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |