一种数据仓库数据更新方法、设备、电子设备及存储介质
文献发布时间:2023-06-19 10:06:57
技术领域
本说明书一个或多个实施例涉及数据存储技术领域,尤其涉及一种数据仓库数据更新方法、设备、电子设备及存储介质。
背景技术
Hive为一种构建在Hadoop之上的数据仓库,使用Hive进行数据存储,则涉及到一个数据更新的问题,目前Hive支持的数据表操作只有覆盖、追加两种操作。此处所表述的覆盖并不是对某一条记录进行数据覆盖,而是对整表数据进行全量覆盖。追加也不是对原有的数据进行部分更新、追加变更内容,而是将数据整体追加到已有的数据集合中。
hive不支持数据更新、删除操作,只能进行内容追加,并采用全量覆盖方式进行数据更新,在面对数据量巨大,如亿级以上的数据量的时候就会消耗大量的计算资源对数据进行搬移,而搬移的数据其大部分数据是没有发生数据变更的情况下进行的多余的搬移覆盖,这样无疑造成了计算机资源浪费,数据更新速度慢、时间成本高。
发明内容
有鉴于此,本说明书一个或多个实施例的目的在于提出一种数据仓库数据更新方法、设备、电子设备及存储介质,以解决Hive数据仓库数据更新造成的计算机资源浪费,数据更新速度慢、时间成本高的问题。
基于上述目的,本说明书一个或多个实施例提供了一种数据仓库数据更新方法,包括:
将目标数据存储入数据仓库的临时表中,确定所述目标数据的特征信息;
根据所述特征信息,将所述目标数据转换成特定数据交换格式的数据抽取文件;
通过代理脚本调用数据仓库工具对所述数据抽取文件进行数据抽取,将所述数据抽取文件从所述临时表更新到数据仓库的正式表中。
在一些实施方式中,所述将目标数据存储入数据仓库的临时表中之前,还包括:
当所述目标数据为首次存入时,确定所述目标数据的分类信息,根据所述分类信息在所述数据仓库的正式表中建立对应的数据桶。
在一些实施方式中,所述分类信息,包括:时间信息;
所述根据所述特征信息,将所述目标数据转换成特定数据交换格式的数据抽取文件,包括:
若所述目标数据的所述分类信息为所述时间信息时,判断所述时间信息对应的时间段是否超过所述目标数据对应的时间区域;
若是,则延长所述时间区域,使所述时间区域包含所述时间信息对应的时间段;
根据所述特征信息确定的所述数据抽取文件的生成逻辑及延长后的所述时间区域,将所述目标数据转换成特定数据交换格式的数据抽取文件。
在一些实施方式中,所述将所述数据抽取文件从所述临时表更新到数据仓库的正式表中,包括:
根据所述数据抽取文件对应的所述分类信息,对所述正式表中与所述分类信息对应的分区数据进行数据更新。
在一些实施方式中,所述特定数据交换格式为JS对象简谱数据交换格式。
基于同一构思,本说明书一个或多个实施例还提供了一种数据仓库数据更新设备,包括:
确定模块,用于将目标数据存储入数据仓库的临时表中,确定所述目标数据的特征信息;
转换模块,用于根据所述特征信息,将所述目标数据转换成特定数据交换格式的数据抽取文件;
更新模块,用于通过代理脚本调用数据仓库工具对所述数据抽取文件进行数据抽取,将所述数据抽取文件从所述临时表更新到数据仓库的正式表中。
在一些实施方式中,所述确定模块,还用于:
当所述目标数据为首次存入时,确定所述目标数据的分类信息,根据所述分类信息在所述数据仓库的正式表中建立对应的数据桶。
在一些实施方式中,所述分类信息,包括:时间信息;
所述转换模块,还用于:
若所述目标数据的所述分类信息为所述时间信息时,判断所述时间信息对应的时间段是否超过所述目标数据对应的时间区域;
若是,则延长所述时间区域,使所述时间区域包含所述时间信息对应的时间段;
根据所述特征信息确定的所述数据抽取文件的生成逻辑及延长后的所述时间区域,将所述目标数据转换成特定数据交换格式的数据抽取文件。
基于同一构思,本说明书一个或多个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任一项所述的方法。
基于同一构思,本说明书一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机实现如上任一项所述的方法。
从上面所述可以看出,本说明书一个或多个实施例提供的一种数据仓库数据更新方法、设备、电子设备及存储介质,包括:将目标数据存储入数据仓库的临时表中,确定所述目标数据的特征信息;根据所述特征信息,将所述目标数据转换成特定数据交换格式的数据抽取文件;通过代理脚本调用数据仓库工具对所述数据抽取文件进行数据抽取,将所述数据抽取文件从所述临时表更新到数据仓库的正式表中。本说明书一个或多个实施例基于目标数据的特征信息,将其转换为特定数据交换格式的数据抽取文件,再通过代理脚本调用数据仓库工具对数据抽取文件进行数据抽取来对数据仓库的数据进行更新。从而可以实现数据仓库存量数据的增量更新,提高数据更新时效。
附图说明
为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一个或多个实施例提出的一种数据仓库数据更新方法的流程示意图;
图2为本说明书一个或多个实施例提出的一种数据仓库数据更新设备的结构示意图;
图3为本说明书一个或多个实施例提出的电子设备结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本说明书进一步详细说明。
需要说明的是,除非另外定义,本说明书实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件、物件或者方法步骤涵盖出现在该词后面列举的元件、物件或者方法步骤及其等同,而不排除其他元件、物件或者方法步骤。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如背景技术部分所述,hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。在对Hive进行数据更新时,目前业界可行的实施方案为对Hive目标表的数据进行全量覆盖更新,即清除Hive目标表上原有数据,从源表全量迁移已有数据到目标表上,通过这种全量覆盖的方式实现数据的更新;或者对源表中发生的变更数据写入增量表中进行数据记录,将增量表中的数据与目标表的数据进行合并使实现数据更新。但因Hive数据不支持增量更新存量数据,导致在实际应用场景中无法及时准确反映数据变化。
结合上述实际情况,本说明书一个或多个实施例提出了一种数据仓库数据更新方案,基于目标数据的特征信息,将其转换为特定数据交换格式的数据抽取文件,再通过代理脚本调用数据仓库工具对数据抽取文件进行数据抽取来对数据仓库的数据进行更新。从而可以实现数据仓库存量数据的增量更新,提高数据更新时效。
参考图1所示,为本说明书一个实施例的一种数据仓库数据更新方法的流程示意图,具体包括以下步骤:
步骤101,将目标数据存储入数据仓库的临时表中,确定所述目标数据的特征信息。
本步骤旨在,将目标数据存入临时表,以备之后将其更新入正式表中,并确定其的特征信息,已对目标数据的性质进行确定。其中,目标数据可以是能够进行信息存储的各种数据,在这些数据中可能存在较为基础、长期不会变动的数据,例如用户的身份信息、企业的企业基础信息等等,这些数据长期存在且不发生更改,一般可以认为是变动不多的冷数据。同时,目标数据还可能存在经常会发生变动的活跃数据,例如用户的资金存储信息等等,这些数据可能会在短时间内发生连续的变动,一般可以认为是变动较多的热数据。数据仓库即为hive数据仓库,hive中包含以下四类数据模型:表(Table)、外部表(ExternalTable)、分区(Partition)、桶(Bucket)。之后,确定目标数据的特征信息,此特征信息用于确认当前的目标数据是对当前正式表中数据存量的更改还是对当前正式表进行增量还是增量加存量的形式等等。
在一些应用场景中,为了更好地区分每条目标数据,并且能够更好地区分出目标数据中的冷热数据。所述将目标数据存储入数据仓库的临时表中之前,还可以包括:当所述目标数据为首次存入时,确定所述目标数据的分类信息,根据所述分类信息在所述数据仓库的正式表中建立对应的数据桶。其中分类信息可以是反应目标数据具体执行机构的信息和生成时间的信息等等。即,在具体应用场景中,通过数据抽取工具,以文本格式从关系型数据库抽取指定时间范围内的数据到Hive库临时表。然后按照机构和时间两个要素在Hive库上创建支持列存的正式表,即按机构+时间分区模式形成相应的数据桶;此情况只有在第一次迁移历史存量数据的时候会按照机构、时间两个要素进行Hive库正式表新建操作,后续增量迁移热数据时不会再进行创建正式表的动作。
步骤102,根据所述特征信息,将所述目标数据转换成特定数据交换格式的数据抽取文件。
本步骤旨在,将目标数据转换成易于解析和生成的特定数据交换格式的数据抽取文件。其中,根据不同的特征信息,其对应的抽取逻辑是不同的,存量、增量、存量+增量等都各自对应着不同的抽取逻辑,进而此处需要根据目标数据的特征信息确定其对应的抽取逻辑。之后,再根据对应的抽取逻辑将目标数据转换为特定数据交换格式的数据抽取文件。此处,可以生成json格式的数据抽取文件,即,所述特定数据交换格式为JS对象简谱数据交换格式。JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式,它基于ECMAScript(欧洲计算机协会制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于阅读和编写,同时也易于处理器解析和生成,并有效地提升网络传输效率。当然其还可以根据具体的应用场景,生成其他数据交换格式的数据抽取文件,例如:jQuery、E4X、WMLScript等等。
在一些应用场景中,以步骤101中的具体场景为例,按时间要素从临时表迁移数据到Hive库正式表时要考虑时间要素跨越数据区的问题。避免按照时间分区更新数据时造成存量数据丢失。即所述分类信息,包括:时间信息;所述根据所述特征信息,将所述目标数据转换成特定数据交换格式的数据抽取文件,包括:若所述目标数据的所述分类信息为所述时间信息时,判断所述时间信息对应的时间段是否超过所述目标数据对应的时间区域;若是,则延长所述时间区域,使所述时间区域包含所述时间信息对应的时间段;根据所述特征信息确定的所述数据抽取文件的生成逻辑及延长后的所述时间区域,将所述目标数据转换成特定数据交换格式的数据抽取文件。在具体应用场景中,其是在从关系型数据库加载数据到Hive库临时表时要提前预判更新的增量数据是否存在跨越时间区域的情况,如果存在该问题则要自动延长回溯时间至完全覆盖该时间分区的数据。避免增量更新该分区数据时造成数据丢失问题。
步骤103,通过代理脚本调用数据仓库工具对所述数据抽取文件进行数据抽取,将所述数据抽取文件从所述临时表更新到数据仓库的正式表中。
本步骤旨在,通过代理脚本执行数据抽取文件,将数据从临时表抽取到Hive库的正式表中,实现数据的增量更新。其中,由于安全、复杂、繁琐等原因,用户不能直接接触处理器内核,需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令等),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核了。从而在用户和内核之间增加了一层“代理”,既能简化用户的操作,又能保障内核的安全。根据不同的内核其代理脚本也不尽相同,在Linux下,这个代理脚本即为Shell脚本。之后,数据仓库工具即为ETL(Extract-Transform-Load)工具,其是用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。即,通过Shell脚本调用ETL工具执行数据抽取文件,将数据从临时表抽取到Hive库的正式表中,实现数据的增量更新。
在一些应用场景中,为了可以根据时间等信息更为细化的实现分区数据的局部更新。所述将所述数据抽取文件从所述临时表更新到数据仓库的正式表中,包括:根据所述数据抽取文件对应的所述分类信息,对所述正式表中与所述分类信息对应的分区数据进行数据更新。
通过应用本说明书一个或多个实施例提供的一种数据仓库数据更新方法,包括:将目标数据存储入数据仓库的临时表中,确定所述目标数据的特征信息;根据所述特征信息,将所述目标数据转换成特定数据交换格式的数据抽取文件;通过代理脚本调用数据仓库工具对所述数据抽取文件进行数据抽取,将所述数据抽取文件从所述临时表更新到数据仓库的正式表中。本说明书一个或多个实施例基于目标数据的特征信息,将其转换为特定数据交换格式的数据抽取文件,再通过代理脚本调用数据仓库工具对数据抽取文件进行数据抽取来对数据仓库的数据进行更新。从而可以实现数据仓库存量数据的增量更新,提高数据更新时效。
在具体应用场景中,该方法可以通过使用quartz、动态数据源、多线程、以及ETL工具datax等技术来实施,当任务到达指定时间或者立即执行,根据数据源的数量,处理器可以同时开启多个线程。把数据源等其他信息以输入流的形式写入并生成到Json文件当中,然后通过Shell脚本命令运行Json文件,根据指标的时间、机构等要素,对指定分区数据进行局部更新,实现数据由关系型数据库到Hive数据库的搬迁。之后还可以刷新Impala元数据,使Imapla感知到Hive数据库的变化后,可以供探索空间使用。
需要说明的是,本说明书一个或多个实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本说明书一个或多个实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,本说明书一个或多个实施例还提供了一种数据仓库数据更新设备,参考图2所示,包括:
确定模块201,用于将目标数据存储入数据仓库的临时表中,确定所述目标数据的特征信息;
转换模块202,用于根据所述特征信息,将所述目标数据转换成特定数据交换格式的数据抽取文件;
更新模块203,用于通过代理脚本调用数据仓库工具对所述数据抽取文件进行数据抽取,将所述数据抽取文件从所述临时表更新到数据仓库的正式表中。
为了描述的方便,描述以上设备时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
上述实施例的设备用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
作为一个可选的实施例,所述确定模块201,还用于:
当所述目标数据为首次存入时,确定所述目标数据的分类信息,根据所述分类信息在所述数据仓库的正式表中建立对应的数据桶。
作为一个可选的实施例,所述分类信息,包括:时间信息;
所述转换模块202,还用于:
若所述目标数据的所述分类信息为所述时间信息时,判断所述时间信息对应的时间段是否超过所述目标数据对应的时间区域;
若是,则延长所述时间区域,使所述时间区域包含所述时间信息对应的时间段;
根据所述特征信息确定的所述数据抽取文件的生成逻辑及延长后的所述时间区域,将所述目标数据转换成特定数据交换格式的数据抽取文件。
作为一个可选的实施例,所述更新模块203,还用于:
根据所述数据抽取文件对应的所述分类信息,对所述正式表中与所述分类信息对应的分区数据进行数据更新。
作为一个可选的实施例,所述特定数据交换格式为JS对象简谱数据交换格式。
基于同一发明构思,本说明书一个或多个实施例还提供了一种电子设备。该电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任意一实施例所述的一种数据仓库数据更新方法。
图3示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器310、存储器320、输入/输出接口330、通信接口340和总线350。其中处理器310、存储器320、输入/输出接口330和通信接口340通过总线350实现彼此之间在设备内部的通信连接。
处理器310可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器320可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器320可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器320中,并由处理器310来调用执行。
输入/输出接口330用于连接输入/输出模块,以实现信息输入及输出。输入/输出模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口340用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线350包括一通路,在设备的各个组件(例如处理器310、存储器320、输入/输出接口330和通信接口340)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器310、存储器320、输入/输出接口330、通信接口340以及总线350,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的设备用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,本说明书一个或多个实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机实现如上任意一实施例所述的一种数据仓库数据更新方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本公开的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本说明书一个或多个实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本说明书一个或多个实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出设备,以便避免使本说明书一个或多个实施例难以理解,并且这也考虑了以下事实,即关于这些框图设备的实施方式的细节是高度取决于将要实施本说明书一个或多个实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本公开的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本说明书一个或多个实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本公开的具体实施例对本公开进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本说明书一个或多个实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本公开的保护范围之内。
- 一种数据仓库数据更新方法、设备、电子设备及存储介质
- 一种应用于金融业务的数据仓库更新方法、装置和电子设备