一种基于Flume的关系数据库存储数据的方法和装置与流程

文档序号:14444279阅读:160来源:国知局
本发明涉及计算机
技术领域
:,特别涉及一种基于flume的关系数据库存储数据的方法和装置。
背景技术
::flume可以提供文件数据、日志数据等的采集、聚合和写入kafka、hdfs、hive等的功能。现有技术中,可使用flume已提供的文件数据、日志数据的采集能力采集数据并存储,但无法将flume采集的数据存储至关系数据库。技术实现要素:本发明实施例提供了一种基于flume的关系数据库存储数据的方法和装置,能够将flume采集的数据存储至关系数据库。第一方面,本发明实施例提供了一种基于flume的关系数据库存储数据的方法,包括:预先设置可变配置项、与关系数据库类型相对应的关系数据库驱动;根据所述可变配置项和与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库驱动;根据所述目标关系数据库驱动和所述可变配置项,创建数据库连接;还包括:从flume获取待存储数据;根据所述数据库连接和所述可变配置项,将所述待存储数据存储至目标关系数据库。优选地,所述可变配置项,包括:所述目标关系数据库的驱动类;所述根据所述可变配置项和与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库驱动,包括:根据所述目标关系数据库的驱动类,确定目标关系数据库类型;根据与关系数据库类型相对应的关系数据库驱动,确定所述目标关系数据库类型对应的目标关系数据库驱动。优选地,所述可变配置项,包括:数据库地址、用户名和用户密码;所述根据所述目标关系数据库驱动和所述可变配置项,创建数据库连接,包括:根据所述目标关系数据库驱动、所述数据库地址、所述用户名和所述用户密码,创建数据库连接。优选地,所述可变配置项,包括:单次批量、分隔符、字段列表、数据库表;所述根据所述数据库连接和所述可变配置项,将所述待存储数据存储至目标关系数据库,包括:根据所述单次批量,对所述待存储数据进行分批处理,生成至少一批第一待存储数据,其中,每一批所述第一待存储数据中包括至少一条数据;针对每一批所述第一待存储数据,均执行:根据所述分隔符,对当前第一待存储数据中的每一条所述数据进行分割处理,生成与各条所述数据对应的至少一个数据项;根据所述字段列表、所述数据库表,将各个所述数据项拼接为数据库表达式;利用所述数据库连接,将所述数据库表达式提交至目标关系数据库。第二方面,本发明实施例提供了一种基于flume的关系数据库存储数据的装置,包括:设置单元,用于设置可变配置项、与关系数据库类型相对应的关系数据库驱动;创建单元,用于根据所述设置单元设置的所述可变配置项和与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库驱动;根据所述目标关系数据库驱动和所述可变配置项,创建数据库连接;获取单元,用于从flume获取待存储数据;存储单元,用于根据所述创建单元创建的所述数据库连接和所述可变配置项,将所述获取单元获取的所述待存储数据存储至目标关系数据库。优选地,所述可变配置项,包括:所述目标关系数据库的驱动类;所述创建单元,用于根据所述目标关系数据库的驱动类,确定目标关系数据库类型;根据与关系数据库类型相对应的关系数据库驱动,确定所述目标关系数据库类型对应的目标关系数据库驱动。优选地,所述可变配置项,包括:数据库地址、用户名和用户密码;所述创建单元,用于根据所述目标关系数据库驱动、所述数据库地址、所述用户名和所述用户密码,创建数据库连接。优选地,所述可变配置项,包括:单次批量、分隔符、字段列表、数据库表;所述存储单元,用于根据所述单次批量,对所述待存储数据进行分批处理,生成至少一批第一待存储数据,其中,每一批所述第一待存储数据中包括至少一条数据;针对每一批所述第一待存储数据,均执行:根据所述分隔符,对当前第一待存储数据中的每一条所述数据进行分割处理,生成与各条所述数据对应的至少一个数据项;根据所述字段列表、所述数据库表,将各个所述数据项拼接为数据库表达式;利用所述数据库连接,将所述数据库表达式提交至所述目标关系数据库。第三方面,本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行上述任一实施例所述的方法。第四方面,本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行上述任一实施例所述的方法。本发明实施例提供了一种基于flume的关系数据库存储数据的方法和装置,其中,该方法利用预先设置的可变配置项和关系数据库驱动,创建数据库连接,并利用数据库连接将从flume获取的待存储数据存储至目标关系数据库。该方案能够将flume组件采集的数据存储至关系数据库。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明一个实施例提供的一种基于flume的关系数据库存储数据的方法的流程图;图2是本发明另一个实施例提供的一种基于flume的关系数据库存储数据的方法的流程图;图3是本发明一个实施例提供的一种基于flume的关系数据库存储数据的装置的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。如图1所示,本发明实施例提供了一种基于flume的关系数据库存储数据的方法,该方法可以包括以下步骤:步骤101:预先设置可变配置项、与关系数据库类型相对应的关系数据库驱动;步骤102:根据可变配置项和与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库驱动;步骤103:根据目标关系数据库驱动和可变配置项,创建数据库连接;步骤104:从flume获取待存储数据;步骤105:根据数据库连接和可变配置项,将待存储数据存储至目标关系数据库。该方法利用预先设置的可变配置项和关系数据库驱动,创建数据库连接,并利用数据库连接将从flume获取的待存储数据存储至目标关系数据库。该方案能够将flume组件采集的数据存储至关系数据库。在本发明的一个实施例中,为了加载关系数据库驱动,可变配置项,包括:目标关系数据库的驱动类;根据可变配置项和与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库驱动,包括:根据目标关系数据库的驱动类,确定目标关系数据库类型;根据与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库类型对应的目标关系数据库驱动。关系数据库包括不同的类型,例如,一类是桌面数据库,例如access、foxpro和dbase等,另一类是客户/服务器数据库,例如sqlserver、oracle和sybase等。不同类型的关系数据库对应不同的关系数据库驱动,在实际应用场景中需要使用配置的关系数据库的驱动类加载对应的关系数据库驱动。在本发明的一个实施例中,为了实现与关系数据库的连接,可变配置项,包括:数据库地址、用户名和用户密码;根据目标关系数据库驱动和可变配置项,创建数据库连接,包括:根据目标关系数据库驱动、数据库地址、用户名和用户密码,创建数据库连接。通过数据库连接可以实现与关系数据库间的数据交互。在本发明的一个实施例中,为了将待存储数据转化成关系数据库要求的格式,可变配置项,包括:单次批量、分隔符、字段列表、数据库表;根据数据库连接和可变配置项,将待存储数据存储至目标关系数据库,包括:根据单次批量,对待存储数据进行分批处理,生成至少一批第一待存储数据,其中,每一批第一待存储数据中包括至少一条数据;针对每一批第一待存储数据,均执行:根据分隔符,对当前第一待存储数据中的每一条数据进行分割处理,生成与各条数据对应的至少一个数据项;根据字段列表、数据库表,将各个数据项拼接为数据库表达式;利用数据库连接,将数据库表达式提交至目标关系数据库。考虑到实际业务场景中采用的关系数据库类型、关系数据库的地址、数据库的用户名和密码、数据库名称、表名称以及表中的字段等项目会随着业务不同而不同,为了提供通用的关系数据库存储sink,需要将上述项目提供为可变配置项。另外,考虑到实际业务数据中的数据项之间的分隔符可能不同,将分隔符供为可变配置项;考虑到执行效率,将批量大小提供为可变配置项。可变配置项的命名可根据业务需要自定义。本发明为了方便描述,可变配置项及业务含义说明如表1所示。其中,表1中的单次批量指的是一次将待存储数据写入关系数据库的批量大小。表1可变配置项说明driver.class关系数据库的驱动类driver.url数据库地址db.username用户名db.password用户密码db.table数据表db.fields字段列表delimiter分割符batchsize单次批量如图2所示,本发明实施例将对基于flume的关系数据库存储数据的方法进行详细地说明,该方法包括:步骤201:设置可变配置项、与关系数据库类型相对应的关系数据库驱动,其中,可变配置项,包括:目标关系数据库的驱动类、数据库地址、用户名、用户密码、单次批量、分隔符、字段列表和数据库表。步骤202:根据目标关系数据库的驱动类,确定目标关系数据库类型。步骤203:根据与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库类型对应的目标关系数据库驱动。步骤204:根据目标关系数据库驱动、数据库地址、用户名和用户密码,创建数据库连接。步骤205:从flume获取待存储数据。flume由三部分构成source、channel、sink,其中,channel是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,它在source和sink间起着一共桥梁的作用,channel是一个完整的事务,这一点保证了数据在收发的时候的一致性。步骤206:根据单次批量,对待存储数据进行分批处理,生成至少一批第一待存储数据,其中,每一批第一待存储数据中包括至少一条数据。由于单次批量的限制,当待存储数据量较大时,需要进行分批处理。步骤207:针对每一批第一待存储数据,均执行:根据分隔符,对当前第一待存储数据中的每一条数据进行分割处理,生成与各条数据对应的至少一个数据项。每一条数据根据分隔符可以拆分成多个数据项。步骤208:根据字段列表、数据库表,将各个数据项拼接为数据库表达式。将各个数据项与字段列表中各个字段进行匹配,并根据配置的数据库表,将该批次第一待存储数据对应的各个数据项拼接成数据库表达式。步骤209:利用数据库连接,将数据库表达式提交至目标关系数据库。基于本发明实施例的的关系数据库存储sink的配置示例如下所示:agent2mysql.sinks.k1.type=myjdbcsink①agent2mysql.sinks.k1.driver.class=org.gjt.mm.mysql.driver②agent2mysql.sinks.k1.driver.url=jdbc:mysql://127.0.0.1:3306/mydb③agent2mysql.sinks.k1.db.username=myusername④agent2mysql.sinks.k1.db.password=mypassword⑤agent2mysql.sinks.k1.db.table=mytable⑥agent2mysql.sinks.k1.db.fields=myfield1,myfield2,myfield3⑦agent2mysql.sinks.k1.delimiter=mydelimiter⑧agent2mysql.sinks.k1.batchsize=100⑨上表中各标号代表的意义如下:①一种基于flume的关系数据库存储sink的类②对应于某种关系数据库的驱动类③对应于②中描述的关系数据库的数据库地址④对应于③中描述的数据库的用户名⑤对应于③中描述的数据库的用户密码⑥对应于③中描述的数据库中的某张表⑦对应于⑥中描述的某张表中的某些字段⑧对应于基于flume采集到数据的分割符⑨对应于一次将数据写入数据库的批量大小如图3所示,本发明实施例提供了一种基于flume的关系数据库存储数据的装置,包括:设置单元301,用于设置可变配置项、与关系数据库类型相对应的关系数据库驱动;创建单元302,用于根据设置单元301设置的可变配置项和与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库驱动;根据目标关系数据库驱动和可变配置项,创建数据库连接;获取单元303,用于从flume获取待存储数据;存储单元304,用于根据创建单元302创建的数据库连接和可变配置项,将获取单元303获取的待存储数据存储至目标关系数据库。在本发明的一个实施例中,可变配置项,包括:目标关系数据库的驱动类;创建单元302,用于根据目标关系数据库的驱动类,确定目标关系数据库类型;根据与关系数据库类型相对应的关系数据库驱动,确定目标关系数据库类型对应的目标关系数据库驱动。在本发明的一个实施例中,可变配置项,包括:数据库地址、用户名和用户密码;创建单元302,用于根据目标关系数据库驱动、数据库地址、用户名和用户密码,创建数据库连接。在本发明的一个实施例中,可变配置项,包括:单次批量、分隔符、字段列表、数据库表;存储单元304,用于根据单次批量,对待存储数据进行分批处理,生成至少一批第一待存储数据,其中,每一批第一待存储数据中包括至少一条数据;针对每一批第一待存储数据,均执行:根据分隔符,对当前第一待存储数据中的每一条数据进行分割处理,生成与各条数据对应的至少一个数据项;根据字段列表、数据库表,将各个数据项拼接为数据库表达式;利用数据库连接,将数据库表达式提交至目标关系数据库。上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行执行指令时,存储控制器执行上述任一实施例的方法。本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;存储器用于存储执行指令,处理器与存储器通过总线连接,当存储控制器运行时,处理器执行存储器存储的执行指令,以使存储控制器执行上述任一实施例的方法。综上,本发明各个实施例至少具有如下效果:1、在本发明实施例中,该方法利用预先设置的可变配置项和关系数据库驱动,创建数据库连接,并利用数据库连接将从flume获取的待存储数据存储至目标关系数据库。该方案能够将flume组件采集的数据存储至关系数据库。需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃····〃”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1