基于CarbonData的增量数据收敛更新方法及其系统与流程

文档序号:17641655发布日期:2019-05-11 00:42阅读:380来源:国知局
本发明涉及,尤其涉及基于carbondata的增量数据收敛更新方法及其系统。
背景技术
::为解决多种外部数据源(消息流或文件格式)实现数据增量更新,快速将外部数据源变化收敛到hadoop平台上的全量表中,并能够随时提供聚合查询能力的问题。近些年来,许多公司逐渐开始使用carbondata这种开源的大数据高性能数据存储格式,相比其他技术有明显优势,不仅可以提供丰富的索引及编码支持,同时还基于hadoop生态、与spark的高度集成,但还存在一些问题限制了它的应用。carbondata目前流处理只支持数据的插入,不支持数据的删除和更新。对于需要对数据进行删除和更新的场景不能直接使用,需要采用全量更新变通方案,复杂且低效。还有对旧有外部数据源系统(非消息流的文件格式、0.8.x低版本的kafka,rabbitmq,rocketmq)的兼容较差。carbondata缺少对增量数据的有效管理,无法追溯增量数据收敛过程的顺序性及准确性。另外,数据的删除和更新操作容易产生碎片,虽然提供了通过sql合并和清理碎片的碎片整理功能,但合并和清理的时间太接近容易导致数据长时间不可用,合并或清理太频繁也会影响其随时提供聚合查询能力。对于需要对数据进行删除和更新的场景,无法直接使用carbondata流处理来对应。外部数据源系统不满足carbondata的兼容性要求时,数据源将不可用。增量数据处理发生异常时,无法追溯增量数据收敛过程的顺序性及准确性。碎片整理会影响其随时提供聚合查询能力。技术实现要素:本发明的目的在于提供基于carbondata的增量数据收敛更新方法及其系统,能保证增量数据处理的实时性、持续性、有序性。本发明采用的技术方案是:基于carbondata的增量数据收敛更新方法,其特征在于:其包括以下步骤:步骤1,增量数据落地模块将增量数据进行识别处理后落地至待做目录中,在元数据表新增一条记录;步骤2,新增记录后触发元数据表预设的触发器,触发器在数据增量更新收敛模块的调度功能上新增一条任务;步骤3,数据增量更新收敛模块获取调度任务,并以触发型任务优先原则进行确定当前任务类型;步骤4,根据当前任务类型进行任务逻辑处理,将增量文件移动到add目录;步骤5,执行更新收敛的sql语句将增量文件增量收敛到全量表;步骤6,完成增量数据收敛更新后将对应记录恢复成未占用状态并修改该记录对应字段内容信息。进一步地,步骤1的具体步骤如下:步骤1.1,当增量数据为于消息流格式的增量时,增量数据落地模块进行消息流格式增量数据处理,具体步骤为:步骤1.1.1,对于消息流格式的增量,增量数据落地模块消费一批消息并转成csv文件格式写到temp临时目录,步骤1.1.2,csv文件生成完整后根据业务需要将临时目录的文件进行合并或分拆并依次移到待做目录;步骤1.2,当增量数据为于文件格式的增量时,增量数据落地模块直接把文件格式的增量数据存储到待做目录;步骤1.3,增量数据落地至待做目录后,增量数据落地模块在元数据表新增一条记录。进一步地,步骤1.1.2中csv文件生成完整后按照设定的时间间隔或文件大小阀值将临时目录的文件进行合并或分拆。进一步地,步骤2中将新生成的增量文件分配给触发型任务优先处理。进一步地,步骤3中调用数据增量更新收敛模块的执行主函数判断执行触发型任务或者定时任务。进一步地,步骤3具体包括以下步骤:步骤3.1,判断是否为触发型任务,是则,以触发型任务作为当前任务类型进行调度任务处理;否则,执行步骤3.2;步骤3.2,判断是否为定时任务,是则,以定时任务作为当前任务类型进行调度任务处理;否则,结束并退出。进一步地,步骤4中任务逻辑处理步骤如下:步骤4.1,查询元数据表,找到符合条件的结果集,结果集包括状态参数,状态参数包括定时任务标识、触发型任务标识和执行状态参数;步骤4.2,判断结果集是否为空或除当前任务类型的标识是否为true;是则,结束并退出;否则,执行步骤3.1.3;步骤4.3,将当前任务类型的标识设为true,更新状态参数并将增量文件移动到add目录;步骤4.4,判断文件移动是否成功,是则,更新状态参数并执行步骤5;否则,结束并退出。进一步地,步骤4.4中修改状态参数包括将结束时间写入批次执行元数据表,并标识已更新。进一步地,步骤6的具体步骤为:判断收敛更新是否出错;是则,将当前任务类型的标识设为false并结束退出;否则,将当前任务类型的标识设为false并将文件移动到trash目录后结束退出。进一步地,本发明还公开了基于carbondata的增量数据收敛更新系统,其包括增量数据落地模块、元数据表管理模块和数据增量更新收敛模块;增量数据落地模块用于接收和识别增量数据后输出csv格式的增量文件落地至待做目录中,并在元数据表新增一条记录;该记录与增量文件的状态保持一致,可全程追溯增量数据收敛过程的顺序性及准确性。元数据表管理模块:用于管理元数据表,并在元数据表新增记录时通过预设的触发器在数据增量更新收敛模块的新增一条调度任务,元数据表存储有每个增量文件的状态参数;数据增量更新收敛模块;用于识别并执行调度任务,并基于触发型任务优先的原则将待做目录中增量文件收敛更新到全量数据。数据增量更新收敛模块基于carbondatasql的基础上扩充了sql用法,增加了定时调度sql或互斥调度sql的用法,用来避免碎片整理影响随时查询。增量数据在收敛更新时先查询元数据表记录定位到要处理的增量文件,并将对应记录状态改成占用状态同时把增量数据增量收敛到全量表。本发明采用以上技术方案,将外部数据源的变化数据按时间维度或文件大小阀值分批落地到分布式文件系统并在落地同时将每个批次的状态记录到元数据表。负责处理增量数据的数据增量更新收敛模块会先从该元数据表查询到具体任务再执行sql脚本中的多条sql语句将对应的增量数据更新到全量数据中并最后修改元数据表中的任务状态,保证了不同数据源的增量数据能被持续且正确的处理。负责处理增量数据的元数据表还有定时和互斥执行sql功能,用来避免碎片清理和碎片合并执行时间间隔太短及在业务低峰期执行碎片清理或碎片合并操作,保证业务高峰期的聚合查询能力。本发明利用元数据表管理模块,当增量数据处理发生异常时,可追溯增量数据收敛过程的顺序性及准确性。本发明降低了对外部数据源系统的限制,可针对多种外部数据源(消息流或文件格式)实现数据增量更新,无需使用全量更新变通,快速将外部数据源变化收敛到hadoop平台上的全量表中。本专利有机整合各模块的系统,便于实时、持续且有序处理增量数据的场景,且方便随时查询使用,用户通过配置数据源和编写sql脚本就能满足业务需求。附图说明以下结合附图和具体实施方式对本发明做进一步详细说明;图1为本发明基于carbondata增量更新收敛系统的原理示意图;图2为本发明基于carbondata增量更新收敛方法的调度及收敛更新的流程示意图。具体实施方式如图1或2所示,本发明公开了基于carbondata的增量数据收敛更新方法,其特征在于:其包括以下步骤:步骤1,增量数据落地模块将增量数据进行识别处理后落地至待做目录中,在元数据表新增一条记录;如图1所示,步骤1的具体步骤如下:步骤1.1,当增量数据为于消息流格式的增量时,增量数据落地模块进行消息流格式增量数据处理,具体步骤为:步骤1.1.1,对于消息流格式的增量,增量数据落地模块消费一批消息并转成csv文件格式写到temp临时目录,步骤1.1.2,csv文件生成完整后根据业务需要将临时目录的文件进行合并或分拆并依次移到待做目录;进一步地,csv文件生成完整后按照设定的时间间隔或文件大小阀值将临时目录的文件进行合并或分拆。具体的,增量数据落地模块就消费一批消息并根据业务需要(比如按一定的时间间隔或文件大小达到配置的阀值)形成csv格式的单个增量数据文件,并将增量数据文件落地到hdfs,hdfs的目录命名规划如下:路径由“hdfs://ns1/user/+yarn用户名+/public/+状态目录+/+表名”构成(如示例1所示),增量用_add标识(全量用_all标识),_h为hive后缀(_c为carbondata后缀)。状态目录含义如下:temp:临时目录,一般只用于消息流处理存放增量数据落地模块生成的中间csv文件。当文件完整生成后,由增量数据落地模块自动移动到todo目录,并向元数据表插入对应记录;todo:待做目录,存放待收敛的csv文件。对应元数据表hdfsstate字段为0,由数据增量更新收敛模块自动移动到add目录;add:增量目录,该文件夹必须事先注册为hive表,存放在该目录下的csv文件,会作为增量表,被数据增量更新收敛模块中对应的收敛逻辑sql脚本执行。对应元数据表hdfsstate字段为1,由数据增量更新收敛模块自动移动到trash目录;trash:废弃目录,已完成收敛的csv文件会被存放在该目录下,该文件夹建议事先注册为hive表,方便核查。对应hdfsstate为2。示例1,以产品实例表"prod_inst"为例:hdfs://ns1/user/e_carbon/public/temp/prod_inst_add_hhdfs://ns1/user/e_carbon/public/todo/prod_inst_add_hhdfs://ns1/user/e_carbon/public/add/prod_inst_add_hhdfs://ns1/user/e_carbon/public/trash/prod_inst_add_hhdfs://ns1/user/e_carbon/public/prod_inst_add_c对于消息流格式的增量,步骤1的详细流程是增量数据落地模块消费一批消息并转成csv文件格式写到temp临时目录,当csv文件生成完整后根据业务需要(比如按一定的时间间隔或文件大小达到配置的阀值)将临时目录的文件进行合并或分拆并依次移到todo待做目录。步骤1.2,当增量数据为于文件格式的增量时,增量数据落地模块直接把文件格式的增量数据存储到待做目录;步骤1.3,增量数据落地至待做目录后,增量数据落地模块在元数据表新增一条记录。具体地,元数据表的详细字段说明如表1所示:表1元数据表的详细字段说明其中的autoid由数据库自动生成,以批次唯一编号batchname字段标识不同表的增量文件,该字段中包含的时间戳是文件移动到todo目录的时间。以文件号标识调度任务,该字段由批次唯一编号通过md5算法生成integer类型数字生成。步骤2,新增记录后触发元数据表预设的触发器,触发器在数据增量更新收敛模块的调度功能上新增一条任务;进一步地,步将新生成的增量文件分配给触发型任务优先处理;步骤3,数据增量更新收敛模块获取调度任务,并以触发型任务优先原则进行确定当前任务类型;具体地,调度任务分别为触发型任务和定时任务,调用数据增量更新收敛模块的执行主函数判断执行触发型任务或者定时任务,调度触发型任务时,会把表名及scheid文件号作为参数传给数据增量更新收敛模块;调度定时型任务时,只把表名作为入参传给数据增量更新收敛模块。数据增量更新收敛模块根据传入的参数是否有判断应该执行哪种类型的代码逻辑。两种类型的代码逻辑都会先查询判断另一种类型任务是否在运行,比如触发型任务会判断schedulelock字段是否为true,定时型任务会判断triggerlock字段是否为true。如果为true就立即退出,释放资源。如果为false则先把自己类型的锁字段设为true,比如触发型任务会把triggerlock字段设为true,定时型任务会把schedulelock字段设为true。需要注意的是,数据增量更新收敛模块具备批处理能力,可以一次从元数据表中读取多条记录并同时对多个增量文件做处理,两种类型的任务都可以把批次大小作为入参传入,所以触发型任务传入的文件号并不跟实际处理的增量文件一一对应。同时还可以把超时时间disparitytime参数传入,因为考虑到极端情况可能有任务执行卡死的情况,此时新调度的任务判断发现未完成的任务有延时超过该时长的情况就可以直接处理对应的增量文件。具体类型识别步骤如下:步骤3.1,判断是否为触发型任务,是则,以触发型任务作为当前任务类型进行调度任务处理;否则,执行步骤3.2;步骤3.2,判断是否为定时任务,是则,以定时任务作为当前任务类型进行调度任务处理;否则,结束并退出。步骤4,根据当前任务类型进行任务逻辑处理,将增量文件移动到add目录;进一步地,步骤4中任务逻辑处理步骤如下:步骤4.1,查询元数据表,找到符合条件的结果集,结果集包括状态参数,状态参数包括定时任务标识、触发型任务标识和执行状态参数;步骤4.2,判断结果集是否为空或除当前任务类型的标识是否为true;是则,结束并退出;否则,执行步骤3.1.3;步骤4.3,将当前任务类型的标识设为true,更新状态参数并将增量文件移动到add目录;步骤4.4,判断文件移动是否成功,是则,更新状态参数并执行步骤5;否则,结束并退出。修改状态参数包括将结束时间写入批次执行元数据表,并标识已更新。步骤5,执行更新收敛的sql语句将增量文件增量收敛到全量表;执行触发或定时类型的任务逻辑处理时,定位到要处理的增量文件后,就会将文件由todo目录移到add目录,因为add目录事先已经注册成hive表的数据目录,所以hive表立即就能查出新增的数据。由于carbondata支持查询hive数据,所以支持类似:insertintocarbondataselect*fromhive的sql语句。通过类似sql语句可以将数据源为hive的增量表的数据插入数据源为carbondata格式的全量表。针对一张表的多句sql语句可以写在一个sql脚本文件中,以分号分隔且允许换行,规定把表名作为脚本文件名。数据增量更新收敛模块会逐行读取并执行sql脚本文件中的sql语句,达到将对应的增量文件收敛更新到全量文件的效果。数据增量更新收敛模块还基于carbondatasql的基础上扩充了sql用法,增加了定时调度sql(如示例2所示)或互斥调度sql的用法(如示例3所示)。定时调度sql的用法以关键字$schedule开头,中括号内的begin和end标志期望运行sql语句的时间区间,中括号后面是实际carbondata支持的sql语句。只要当前时间落在区间内就执行sql语句,否则不执行。定时不调度sql的用法与定时调度sql类似,以关键字$noschedule开头,当前时间落在begin和end区间内就不执行sql语句。定时调度sql和定时不调度sql搭配使用就能实现互斥调度sql的效果。数据增量更新收敛模块还支持注释功能(如示例4所示),自动跳过以--打头的sql语句执行下一句,方便使用人员调试sql脚本。示例4虽然有三句sql,但由于第2句有注释,所以数据增量更新收敛模块只会执行第1句和第3句sql。示例2$schedule[begin=14:11:11,end=16:22:22]altertablecarbon_tablecompact'minor';$schedule[begin=17:11:11,end=17:22:22]cleanfilesfortablecarbon_table;示例3$schedule[begin=14:11:11,end=16:22:22]altertablecarbon_tablecompact'minor';$noschedule[begin=14:11:11,end=16:22:22]cleanfilesfortablecarbon_table;$noschedule[begin=17:11:11,end=19:22:22]altertablecarbon_tablecompact'minor';$schedule[begin=17:11:11,end=19:22:22]cleanfilesfortablecarbon_table;示例4$schedule[begin=17:11:11,end=17:22:22]cleanfilesfortablecarbon_table;--$schedule[begin=14:11:11,end=16:22:22]altertablecarbon_tablecompact'minor';$schedule[begin=17:11:11,end=17:22:22]cleanfilesfortablecarbon_table;步骤6,完成增量数据收敛更新后将对应记录恢复成未占用状态并修改该记录对应字段内容信息。具体地,判断收敛更新是否出错;是则,将当前任务类型的标识设为false并结束退出;否则,将当前任务类型的标识设为false并将文件移动到trash目录后结束退出。无论收敛更新成功还是失败,任务都要将锁释放,即定时型任务将对应记录的schedulerlock改为false,触发型任务将对应记录的triggerlock的状态改为false。如果收敛更新成功,则将元数据表finishtime1字段值改为当前时间,并更新state字段为1,最后把对应的一批增量文件移到trash目录。进一步地,本发明还公开了基于carbondata的增量数据收敛更新系统,其包括增量数据落地模块、元数据表管理模块和数据增量更新收敛模块;增量数据落地模块用于接收和识别增量数据后输出csv格式的增量文件落地至待做目录中,并在元数据表新增一条记录;该记录与增量文件的状态保持一致,可全程追溯增量数据收敛过程的顺序性及准确性。元数据表管理模块:用于管理元数据表,并在元数据表新增记录时通过预设的触发器在数据增量更新收敛模块的新增一条调度任务,元数据表存储有每个增量文件的状态参数;数据增量更新收敛模块;用于识别并执行调度任务,并基于触发型任务优先的原则将待做目录中增量文件收敛更新到全量数据。数据增量更新收敛模块基于carbondatasql的基础上扩充了sql用法,增加了定时调度sql或互斥调度sql的用法,用来避免碎片整理影响随时查询。增量数据在收敛更新时先查询元数据表记录定位到要处理的增量文件,并将对应记录状态改成占用状态同时把增量数据增量收敛到全量表。本发明采用以上技术方案,将外部数据源的变化数据按时间维度或文件大小阀值分批落地到分布式文件系统并在落地同时将每个批次的状态记录到元数据表。负责处理增量数据的数据增量更新收敛模块会先从该元数据表查询到具体任务再执行sql脚本中的多条sql语句将对应的增量数据更新到全量数据中并最后修改元数据表中的任务状态,保证了不同数据源的增量数据能被持续且正确的处理。负责处理增量数据的元数据表还有定时和互斥执行sql功能,用来避免碎片清理和碎片合并执行时间间隔太短及在业务低峰期执行碎片清理或碎片合并操作,保证业务高峰期的聚合查询能力。本发明利用元数据表管理模块保证了增量数据能被持续、有序的收敛和追溯,当增量数据处理发生异常时,可追溯增量数据收敛过程的顺序性及准确性。本发明降低了对外部数据源系统的限制,修改增量数据落地模块就能兼容旧有系统,降低引入风险;可针对多种外部数据源(消息流或文件格式)实现数据增量更新,无需使用全量更新变通,快速将外部数据源变化收敛到hadoop平台上的全量表中。本专利有机整合各模块的系统,便于实时、持续且有序处理增量数据的场景,且方便随时查询使用,用户通过配置数据源和编写sql脚本就能满足业务需求。本发明本发明解决了carbondata的流式处理方案不支持增量更新的问题,降低了业务改造的工作量。本发明数据增量更新收敛模块(互斥及定时调度sql语句)保留carbondata支持碎片整理和清理功能可以不间断提供聚合查询能力。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1