一种基于Flume的将数据存储为文件的方法及装置与流程

文档序号:15761284发布日期:2018-10-26 19:19阅读:248来源:国知局
一种基于Flume的将数据存储为文件的方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种基于flume的将数据存储为文件的方法及装置。



背景技术:

在数据处理中经常会遇到将数据存储为文件的需求,现有技术中一般将数据进行序列化之后,直接将数据存储为文件。但是,现有技术中无法实现对数据的清洗。



技术实现要素:

本发明实施例提供了一种基于flume的将数据存储为文件的方法及装置,能够对数据进行清洗。

一方面,本发明实施例提供了一种基于flume的将数据存储为文件的方法,包括:

预先设置清洗接口;

接收针对所述清洗接口的自定义配置信息;

根据针对所述清洗接口的自定义配置信息,生成自定义的清洗接口和数据清洗类,其中,所述数据清洗类为所述清洗接口的实现类;

利用flume中的configure()方法获取目标文件名称和所述数据清洗类;

利用flume中的configure()方法实例化所述数据清洗类;

利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗,获取清洗后的数据,将清洗后的数据存储到所述目标文件名称对应的文件中。

进一步地,

所述清洗接口中包括:清洗方法;

所述自定义配置信息中包括:清洗规则;

所述利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗,包括:

利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述清洗规则对所述待存储数据进行清洗。

进一步地,

所述清洗接口中进一步包括:初始化方法;

所述自定义配置信息中进一步包括:解析规则;

进一步包括:

利用flume中的configure()方法调用所述初始化方法实现所述解析规则;

在所述利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述清洗规则对所述待存储数据进行清洗之前,进一步包括:

利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述初始化方法实现的所述解析规则对所述待存储数据进行解析。

进一步地,

该方法进一步包括:

利用flume中的configure()方法获取所述待存储数据的原始存储路径;

在所述利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗之前,进一步包括:

利用flume从所述原始存储路径中获取所述待存储数据。

进一步地,

该方法进一步包括:

利用flume中的start()方法设置所述目标文件名称对应的文件的目标存储路径;

在所述将清洗后的数据存储到所述目标文件名称对应的文件中之后,进一步包括:

将所述目标文件名称对应的文件存储到所述目标存储路径中。

另一方面,本发明实施例提供了一种基于flume的将数据存储为文件的装置,包括:

配置单元,用于设置清洗接口,接收针对所述清洗接口的自定义配置信息,根据针对所述清洗接口的自定义配置信息,生成自定义的清洗接口和数据清洗类,其中,所述数据清洗类为所述清洗接口的实现类;

清洗存储单元,用于利用flume中的configure()方法获取目标文件名称和所述数据清洗类,利用flume中的configure()方法实例化所述数据清洗类,利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗,获取清洗后的数据,将清洗后的数据存储到所述目标文件名称对应的文件中。

进一步地,

所述清洗接口中包括:清洗方法;

所述自定义配置信息中包括:清洗规则;

所述清洗存储单元,在执行所述利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗时,具体用于:利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述清洗规则对所述待存储数据进行清洗。

进一步地,

所述清洗接口中进一步包括:初始化方法;

所述自定义配置信息中进一步包括:解析规则;

所述清洗存储单元,进一步用于利用flume中的configure()方法调用所述初始化方法实现所述解析规则;

所述清洗存储单元,进一步用于在所述利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述清洗规则对所述待存储数据进行清洗之前,利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述初始化方法实现的所述解析规则对所述待存储数据进行解析。

进一步地,

所述清洗存储单元,进一步用于利用flume中的configure()方法获取所述待存储数据的原始存储路径;

所述清洗存储单元,进一步用于在所述利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗之前,利用flume从所述原始存储路径中获取所述待存储数据。

进一步地,

所述清洗存储单元,进一步用于利用flume中的start()方法设置所述目标文件名称对应的文件的目标存储路径;

所述清洗存储单元,进一步用于在所述将清洗后的数据存储到所述目标文件名称对应的文件中之后,将所述目标文件名称对应的文件存储到所述目标存储路径中。

在本发明实施例中,预先设置了清洗接口,利用flume中的方法可以调用清洗接口实现对待储存数据的清洗,该清洗接口可以实现自定义,可以根据业务需求生成对应的清洗接口,进而能够方便地对各种不同业务的待存储数据的清洗。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种基于flume的将数据存储为文件的方法的流程图;

图2是本发明一实施例提供的另一种基于flume的将数据存储为文件的方法的流程图;

图3是本发明一实施例提供的一种基于flume的将数据存储为文件的装置的示意图;

图4是本发明一实施例提供的另一种基于flume的将数据存储为文件的装置的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种基于flume的将数据存储为文件的方法,该方法可以包括以下步骤:

步骤101:预先设置清洗接口;

步骤102:接收针对所述清洗接口的自定义配置信息;

步骤103:根据针对所述清洗接口的自定义配置信息,生成自定义的清洗接口和数据清洗类,其中,所述数据清洗类为所述清洗接口的实现类;

步骤104:利用flume中的configure()方法获取目标文件名称和所述数据清洗类;

步骤105:利用flume中的configure()方法实例化所述数据清洗类;

步骤106:利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗,获取清洗后的数据,将清洗后的数据存储到所述目标文件名称对应的文件中。

在本发明实施例中,预先设置了清洗接口,利用flume中的方法可以调用清洗接口实现对待储存数据的清洗,该清洗接口可以实现自定义,可以根据业务需求生成对应的清洗接口,进而能够方便地对各种不同业务的待存储数据的清洗。

在本发明一实施例中,所述清洗接口中包括:清洗方法;

所述自定义配置信息中包括:清洗规则;

所述利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗,包括:

利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述清洗规则对所述待存储数据进行清洗。

在本发明实施例中,清洗接口中设置有清洗方法,可以根据需要针对清洗方法配置相应的清洗规则,这样,在进行数据清洗时,可以按照自定义的清洗规则进行清洗。

由于数据清洗类是清洗接口的实现类,该数据清洗类中包括了清洗接口的清洗方法。

在本发明一实施例中,所述清洗接口中进一步包括:初始化方法;

所述自定义配置信息中进一步包括:解析规则;

进一步包括:

利用flume中的configure()方法调用所述初始化方法实现所述解析规则;

在所述利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述清洗规则对所述待存储数据进行清洗之前,进一步包括:

利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述初始化方法实现的所述解析规则对所述待存储数据进行解析。

在本发明实施例中,清洗接口中包括了初始化方法,通过初始化方法可以实现自定义配置的解析规则。这样,在进行清洗之前,可以根据解析规则对待存储数据进行解析,然后,将解析后得到的数据进行清洗。

解析规则可以规定如何对待存储数据的进行解析。具体地,解析规则可以根据待存储数据的数据格式进行设置,在按照解析规则进行解析时,能够准确的识别出待存储数据中包含的信息。

举例来说,待存储数据是一个字符串,其中,字符串的第1至第3个字符为时间,第4至第6个字符为地点。解析规则可以按照该数据格式进行设置,这样,在按照解析规则进行解析时,可以解析出时间和地点信息。如果没有解析规则,就无法对该字符串进行准确的识别。

在本发明一实施例中,该方法进一步包括:

利用flume中的configure()方法获取所述待存储数据的原始存储路径;

在所述利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗之前,进一步包括:

利用flume从所述原始存储路径中获取所述待存储数据。

在本发明实施例中,configure()方法可以获取出待存储数据的来源。而该原始存储路径可以是用户预先填写在预设的配置文件中的,configure()方法可以从配置文件的上下文中识别出原始存储路径。

在本发明一实施例中,该方法进一步包括:

利用flume中的start()方法设置所述目标文件名称对应的文件的目标存储路径;

在所述将清洗后的数据存储到所述目标文件名称对应的文件中之后,进一步包括:

将所述目标文件名称对应的文件存储到所述目标存储路径中。

在本发明实施例中,用户可以通过start()方法根据需要设置目标存储路径,这样,存储有待存储数据的文件就会存储到目标存储路径下。

如图2所示,本发明实施例提供了一种基于flume的将数据存储为文件的方法,该方法可以包括以下步骤:

步骤201:预先设置清洗接口,清洗接口中包括:清洗方法和初始化方法。

具体地,该清洗接口可以通过基于flume提供的自定义sink实现类abstractsink来实现。

该清洗接口能够实现不同的业务进行个性化定制。

初始化方法主要是用来实现业务的初始化。

举例来说,清洗接口中的清洗方法为dotransform(eventevt),初始化方法为doinit(contextctx)。

步骤202:接收针对清洗接口的自定义配置信息,自定义配置信息中包括:清洗规则和解析规则。

具体地,用户可以根据需要设置自定义配置信息,通过自定义配置信息可以实现对清洗接口的自定义。由于预先设置了清洗接口,无需重复编写代码,只需根据业务需要进行配置即可。

其中,清洗规则规定了进行数据清洗的实现方式。

步骤203:根据针对清洗接口的自定义配置信息,生成自定义的清洗接口和数据清洗类,其中,数据清洗类为清洗接口的实现类。

具体地,根据自定义配置信息实现了数据清洗类的个性化定制,使得数据的清洗和存储可以按照用户的需求来实现。

步骤204:利用flume中的configure()方法获取目标文件名称、数据清洗类和待存储数据的原始存储路径。

具体地,可以预先为用户提供配置模板,配置模板中设置有目标文件名称字段、数据清洗类字段和原始存储路径字段等,用户只需在各个字段中填写对应的信息即可。这样,configure()方法可以从配置模板的上下文中识别出目标文件名称、数据清洗类和原始存储路径的具体信息。

举例来说,用户在配置模板的目标文件名称字段中填写了“文件1”,那么,configure()方法就可以识别出目标文件名称为“文件1”。

步骤205:利用flume中的start()方法设置目标文件名称对应的文件的目标存储路径。

步骤206:利用flume中的configure()方法实例化数据清洗类。

步骤207:利用flume从原始存储路径中获取待存储数据。

具体地,flume从原始存储路径中采集待存储数据。

步骤208:利用flume中的configure()方法调用初始化方法实现解析规则。

具体地,configure()方法调用初始化方法实现业务初始化,以使得清洗接口和数据清洗类满足当前的业务。

步骤209:利用flume中的process()方法调用数据清洗类中的清洗方法按照初始化方法实现的解析规则对待存储数据进行解析。

具体地,通过对待存储数据的解析,可以使得待存储数据满足存储的需求。

步骤210:利用flume中的process()方法调用数据清洗类中的清洗方法按照清洗规则对解析后的待存储数据进行清洗,获取清洗后的数据,将清洗后的数据存储到目标文件名称对应的文件中,将目标文件名称对应的文件存储到目标存储路径中。

另外,可以利用flume中的stop()方法关闭文件流。

在本发明实施例中,设置了清洗接口,该清洗接口可面向不同的业务进行个性化定制,能够更加方便地满足用户采用flume进行数据采集、传输、个性化数据清洗、存储为文件的需要。

本发明实施例提供了基于flume,对采集到的数据存储为文件之前,对每条数据进行清洗的通用方法。本发明实施例能够适应基于flume采集数据并将数据存储为文件的业务多样性需求,并且方便根据业务需要进行个性化定制开发,对于此类业务需求,本发明实施例普遍适用。

在本发明实施例中,设置了清洗接口,通过自定义的配置信息可以实现对清洗接口和数据清洗类的个性化定制,避免了重复开发的问题,提高框架的重用性。

在本发明实施例中,能够最大化的根据业务需要进行个性化的定制开发,进而应用到实际环境中。

如图3、图4所示,本发明实施例提供了一种基于flume的将数据存储为文件的装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。从硬件层面而言,如图3所示,为本发明实施例提供的一种基于flume的将数据存储为文件的装置所在设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等。以软件实现为例,如图4所示,作为一个逻辑意义上的装置,是通过其所在设备的cpu将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。本实施例提供的一种基于flume的将数据存储为文件的装置,包括:

配置单元401,用于设置清洗接口,接收针对所述清洗接口的自定义配置信息,根据针对所述清洗接口的自定义配置信息,生成自定义的清洗接口和数据清洗类,其中,所述数据清洗类为所述清洗接口的实现类;

清洗存储单元402,用于利用flume中的configure()方法获取目标文件名称和所述数据清洗类,利用flume中的configure()方法实例化所述数据清洗类,利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗,获取清洗后的数据,将清洗后的数据存储到所述目标文件名称对应的文件中。

在本发明一实施例中,所述清洗接口中包括:清洗方法;

所述自定义配置信息中包括:清洗规则;

所述清洗存储单元,在执行所述利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗时,具体用于:利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述清洗规则对所述待存储数据进行清洗。

在本发明一实施例中,所述清洗接口中进一步包括:初始化方法;

所述自定义配置信息中进一步包括:解析规则;

所述清洗存储单元,进一步用于利用flume中的configure()方法调用所述初始化方法实现所述解析规则;

所述清洗存储单元,进一步用于在所述利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述清洗规则对所述待存储数据进行清洗之前,利用flume中的process()方法调用所述数据清洗类中的所述清洗方法按照所述初始化方法实现的所述解析规则对所述待存储数据进行解析。

在本发明一实施例中,所述清洗存储单元,进一步用于利用flume中的configure()方法获取所述待存储数据的原始存储路径;

所述清洗存储单元,进一步用于在所述利用flume中的process()方法调用自定义的清洗接口和实例化后的所述数据清洗类对待存储数据进行清洗之前,利用flume从所述原始存储路径中获取所述待存储数据。

在本发明一实施例中,所述清洗存储单元,进一步用于利用flume中的start()方法设置所述目标文件名称对应的文件的目标存储路径;

所述清洗存储单元,进一步用于在所述将清洗后的数据存储到所述目标文件名称对应的文件中之后,将所述目标文件名称对应的文件存储到所述目标存储路径中。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明实施例提供的任意一种基于flume的将数据存储为文件的方法。

本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;

所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的执行指令,以使所述存储控制器执行本发明实施例提供的任意一种基于flume的将数据存储为文件的方法。

本发明各个实施例至少具有如下有益效果:

1、在本发明实施例中,预先设置了清洗接口,利用flume中的方法可以调用清洗接口实现对待储存数据的清洗,该清洗接口可以实现自定义,可以根据业务需求生成对应的清洗接口,进而能够方便地对各种不同业务的待存储数据的清洗。

2、本发明实施例提供了基于flume,对采集到的数据存储为文件之前,对每条数据进行清洗的通用方法。本发明实施例能够适应基于flume采集数据并将数据存储为文件的业务多样性需求,并且方便根据业务需要进行个性化定制开发,对于此类业务需求,本发明实施例普遍适用。

3、在本发明实施例中,设置了清洗接口,通过自定义的配置信息可以实现对清洗接口和数据清洗类的个性化定制,避免了重复开发的问题,提高框架的重用性。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质中。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1