首页 / 专利库 / 信号处理 / 数据采集 / 一种基于Flume的可配置数据集成方法

一种基于Flume的可配置数据集成方法

阅读:273发布:2020-05-08

专利汇可以提供一种基于Flume的可配置数据集成方法专利检索,专利查询,专利分析的服务。并且一种基于Flume的可配置数据集成方法,包括以下步骤:第一步, 数据采集 Agent实现,如下:1.1)公共信息提取;1.2)采集Agent执行过程;第二步,数据清洗Agent实现,如下:2.1)公共信息提取;2.2)清洗Agent执行过程;第三步,数据补充Agent实现,如下:3.1)公共信息提取;3.2)补充Agent执行过程;第四步,数据标准化Agent实现,如下:4.1)数据标准化策略;4.2)标准化Agent执行过程;第五步,数据输出Agent实现,如下:5.1)公共信息提取;5.2)输出Agent执行过程。进一步通过提取公共信息的方式,改写了source或者sink的具体功能,使source或者sink成为一个可重复利用的单元,结合配置文件将这些单元组装到Agent中,使Agent完成具体的功能,从而实现了可配置化的需求。本 发明 对图书馆的异构数据进行高校内的快速集成,搭建高校各自的数据集成中心。,下面是一种基于Flume的可配置数据集成方法专利的具体信息内容。

1.一种基于Flume的可配置数据集成方法,所述方法包括以下步骤:
第一步,数据采集Agent实现,过程如下:
1.1)公共信息提取
数据采集工作需应对不同的数据表,在source中提取抽取操作的公共信息,提取内容包括数据库连接url、账户user、密码password、表名tablename、sql语句select、轮询周期delay、读取数量incremental.value、自增列column.name和状态文件status.file,通过改写的source,使数据的抽取操作可配置化;
1.2)采集Agent执行过程
①当Agent启动时,Agent中的source从启动配置文件中读取上文提取的公共信息,连接对应的数据库,并控制自身的数据表轮询操作;
②source继续从状态文件status.file中读取上一次读取数据的位置,第一次读取则从0开始读取,当数据新增时,即数据的自增列值column.name大于状态文件中的值,source就会将数据读取并传输至channel;
③当新增的数据发送至channel之后,sink会进行读出,由于采集层需要与其它层配合,因此对于sink使用avro端口进行实现,实现过程是在配置文件中将sink的type配置为avro,同时配置发送主机的hostname、port;这样sink就会根据配置信息将数据发送至指定的主机端口,sink发送成功后,状态文件的值就会改变,source即可开始下一次的数据抽取工作;
第二步,数据清洗Agent实现,过程如下:
2.1)公共信息提取
当数据被采集层发送至清洗层后,需要对不符合要求的数据进行清洗,通过在sink中提取清洗操作的公共信息控制Agent的清洗行为,提取内容包括位置信息cleandateposition与清洗值cleandatevalue,通过改写sink,使得数据清洗功能可配置化;
2.2)清洗Agent执行过程
①在一层中,Agent将数据发送到了localhost的10000端口,因此,在清洗Agent的source实现中,可将type设置为avro,同时配置bind与port,source即可对上一层的发送数据进行监听读取;
②source读取到数据并传输至channel后,sink会对数据进行读取,
③sink读取后,需要进行真正意义的数据清洗工作,此部分由自定义的类CleanSink实现,它继承于AbstractSink,其中的configure方法,可以读取Agent的配置信息,这里使用自定义配置cleandateposition与cleandatevalue,它们指定了字段在数据中的位置与清洗标准值,当数据在位置cleandateposition上的值为cleandatevalue时,sink就会对数据进行剔除,接着,对于符合要求的数据继续进行端口的转发,配置内容与上一层相同;
第三步,数据补充Agent实现,过程如下:
3.1)公共信息提取
在数据补充层通常使用外键等信息对数据中缺失的字段进行补充,通过在sink中提取补充操作的公共信息控制Agent的补充行为,提取内容包括补充位置信息supplyfrom、数据库连接信息supplyurl、supplyuser、supplypassword、supplytablename、外键信息supplyrelation和关联字段信息supplycolumn;
3.2)补充Agent执行过程
①与前文实现类似,补充Agent的source实现中,将type设置为avro,同时配置bind与port,即可对上一层的发送数据进行监听读取;
②source读取到数据并传输至channel后,sink会对数据进行读取;
③sink由自定义类SupplySink实现,其与CleanSink一致,通过继承AbstractSink自定义实现,其中的configure方法,可以读取Agent的配置信息;在配置内容中,使用字段supplyfrom指定数据中外键字段位置;接着使用字段supplyurl、supplyuser、supplypassword、supplytablename关联上数据补充的来源表;然后使用字段supplyrelation指定关联的对应信息;最后使用字段supplycolumn指定需要读出的读者信息,对于补充后的数据,继续进行端口发送;
④通过上述配置,可实现一张表的数据关联及补充,接下来,对于多张表的关联补充,只需要将多个补充Agent通过端口转发的方式进行连接即可实现数据的完全补充;
第四步,数据标准化Agent实现,过程如下:
4.1)数据标准化策略
得到需要的所有字段信息后,系统需要对有表达差异的数据进行标准化,使用的标准化策略与补全策略类似,具操作是通过人工的方式建立数据标准表,再提取Agent连接数据表的标准信息对数据项进行替换;
4.2)标准化Agent执行过程
①标准化Agent的source实现与上文相同,将type设置为avro,同时配置bind与port,即可对上一层的发送数据进行监听读取;
②source读取到数据传输至channel后,接着sink会对数据进行读取;
③UnificationSink与SupplySink一致,通过继承AbstractSink自定义实现,配置内容也与SupplySink相似,只是使用unification*为前缀,数据标准化后,同样进行端口发送;
第五步,数据输出Agent实现,过程如下:
5.1)公共信息提取
数据集成的最后,需要对数据进行存储,使用Mysql数据库作为校内集成数据的存储中心,通过在sink中提取输出操作的公共信息控制Agent的输出行为,提取内容包括数据库连接信息url、user和password;
5.2)输出Agent执行过程。
①将source的type配置为arvo,从本主机的相应端口中将数据读出;
②source读取数据传输至channel后,接着sink会对数据进行读取;
③StorageMysqlSink是对Mysql数据库实现的输出程序,通过自定义配置url、user、password、table指定输出的数据表连接;通过position、colume指定数据输出的具体位置与列名。
2.如权利要求1所述的一种基于Flume的可配置数据集成方法,其特征在于,对于不同层的Agent实现,通过提取公共信息的方式,改写了source或者sink的具体功能,使source或者sink成为一个可重复利用的单元;接着就利用配置文件组装Agent,使Agent完成具体的功能,从而实现了可配置化的数据集成需求。

说明书全文

一种基于Flume的可配置数据集成方法

技术领域

[0001] 本发明涉及数据采集、清洗、补充,是一种基于Flume的异构数据标准化的可配置集成方法。

背景技术

[0002] 随着科学技术的蓬勃发展与信息的多元化,高校学生对文献等资源的需求也开始变得更为广泛,这对高校图书馆提出了更高的要求,但是面对高校学生多变的需求,单纯地提高图书馆的馆藏能显得杯车薪。在这样的矛盾下,“图书馆联盟”的理念应运而生。其基于互惠共赢的目的,希望通过合作、共享的方式,增强高校图书馆之间的交流,使得高校图书馆之间可以通过共享模式去满足高校学生的资源需求。但是在整体上,我国的“图书馆联盟”建设工作依然停留在初级阶段,高校图书馆之间往往存在自治现象严重,图书馆间的交流了解不足等问题。对此有学者提出对于图书馆资源共享工作建立统一的资源管理系统,但是这种实现方式往往需要改变原来各高校图书馆的自治现状,通过多方协作的方式对各高校图书馆内多种资源进行重新整合,其所带来的消耗与影响往往十分巨大。
[0003] 基于上述问题,众多学者提出在不改变图书馆原有系统的基础上,通过共享信息数据增进图书馆间的了解,由高校自行决定共享工作,增强资源共享的灵活性。但是由于缺乏有效的规划,高校图书馆各自围绕着自身业务建立了多种数据管理系统,对于如何建立一个信息共享平台,增进图书馆间的交互依然存在着以下问题急需解决:
[0004] 高校图书馆间的数据异构。由于高校图书馆管理系统往往由不同企业自主开发实现,因此不同管理系统间相似度极小,数据在存储方式、组织结构、内容定义等方面均存在较大差异,而统一的数据标准是图书馆间进行信息交互的基础,因此如何在不改变图书馆现状的情况下,对高校内的数据进行集成处理是共享平台构建需要解决的问题。

发明内容

[0005] 为了克服现有技术的不足,本发明在定义统一的集成数据标准上,通过自定义实现基于Flume的数据集成工具包,提出一种可配置的数据集成方法,对图书馆的异构数据进行高校内的快速集成,搭建高校各自的数据集成中心。
[0006] 为了解决上述技术问题,本发明提供如下的技术方案:
[0007] 一种基于Flume的可配置数据集成方法,包括以下步骤:
[0008] 第一步,数据采集Agent实现,过程如下:
[0009] 1.1)公共信息提取
[0010] 数据采集工作需应对不同的数据表,在source中提取抽取操作的公共信息,提取内容包括数据库连接url、账户user、密码password、表名tablename、sql语句select、轮询周期delay、读取数量incremental.value、自增列column.name和状态文件status.file,通过改写的source,使数据的抽取操作可配置化;
[0011] 1.2)采集Agent执行过程
[0012] ①当Agent启动时,Agent中的source从启动配置文件中读取上文提取的公共信息,连接对应的数据库,并控制自身的数据表轮询操作;
[0013] ②source继续从状态文件status.file中读取上一次读取数据的位置,第一次读取则从0开始读取,当数据新增时,即数据的自增列值column.name大于状态文件中的值,source就会将数据读取并传输至channel;
[0014] ③当新增的数据发送至channel之后,sink会进行读出,由于采集层需要与其它层配合,因此对于sink使用avro端口进行实现,实现过程是在配置文件中将sink的type配置为avro,同时配置发送主机的hostname、port;这样sink就会根据配置信息将数据发送至指定的主机端口,sink发送成功后,状态文件的值就会改变,source即可开始下一次的数据抽取工作;
[0015] 第二步,数据清洗Agent实现,过程如下:
[0016] 2.1)公共信息提取
[0017] 当数据被采集层发送至清洗层后,需要对不符合要求的数据进行清洗,通过在sink中提取清洗操作的公共信息控制Agent的清洗行为,提取内容包括位置信息cleandateposition与清洗值cleandatevalue,通过改写sink,使得数据清洗功能可配置化;
[0018] 2.2)清洗Agent执行过程
[0019] ①在一层中,Agent将数据发送到了localhost的10000端口,因此,在清洗Agent的source实现中,可将type设置为avro,同时配置bind与port,source即可对上一层的发送数据进行监听读取;
[0020] ②source读取到数据并传输至channel后,sink会对数据进行读取,[0021] ③sink读取后,需要进行真正意义的数据清洗工作,此部分由自定义的类CleanSink实现。它继承于AbstractSink,其中的configure方法,可以读取Agent的配置信息。这里使用自定义配置cleandateposition与cleandatevalue,它们指定了字段在数据中的位置与清洗标准值,当数据在位置cleandateposition上的值为cleandatevalue时,sink就会对数据进行剔除,接着,对于符合要求的数据继续进行端口的转发,配置内容与上一层相同;
[0022] 第三步,数据补充Agent实现,过程如下:
[0023] 3.1)公共信息提取
[0024] 在数据补充层通常使用外键等信息对数据中缺失的字段进行补充,通过在sink中提取补充操作的公共信息控制Agent的补充行为,提取内容包括补充位置信息supplyfrom、数据库连接信息supplyurl、supplyuser、supplypassword、supplytablename、外键信息supplyrelation和关联字段信息supplycolumn;
[0025] 3.2)补充Agent执行过程
[0026] ①与前文实现类似,补充Agent的source实现中,将type设置为avro,同时配置bind与port,即可对上一层的发送数据进行监听读取;
[0027] ②source读取到数据并传输至channel后,sink会对数据进行读取;
[0028] ③sink由自定义类SupplySink实现,其与CleanSink一致,通过继承AbstractSink自定义实现,其中的configure方法,可以读取Agent的配置信息;在配置内容中,使用字段supplyfrom指定数据中外键字段位置;接着使用字段supplyurl、supplyuser、supplypassword、supplytablename关联上数据补充的来源表;然后使用字段supplyrelation指定关联的对应信息;最后使用字段supplycolumn指定需要读出的读者信息,对于补充后的数据,继续进行端口发送;
[0029] ④通过上述配置,可实现一张表的数据关联及补充,接下来,对于多张表的关联补充,只需要将多个补充Agent通过端口转发的方式进行连接即可实现数据的完全补充;
[0030] 第四步,数据标准化Agent实现,过程如下:
[0031] 4.1)数据标准化策略
[0032] 得到需要的所有字段信息后,系统需要对有表达差异的数据进行标准化,使用的标准化策略与补全策略类似,具操作是通过人工的方式建立数据标准表,再提取Agent连接数据表的标准信息对数据项进行替换;
[0033] 以学院举例,操作如下:首先,建立数据标准表z_academy_org,其记录了平台对学院的标准设定;接下来,需要人工的将某一高校的学院表academy与标准表z_academy_org建立一一对应的关系;最后,使用关联查询的方式,对学院信息进行替换;
[0034] 4.2)标准化Agent执行过程
[0035] ①标准化Agent的source实现与上文相同,将type设置为avro,同时配置bind与port,即可对上一层的发送数据进行监听读取;
[0036] ②source读取到数据传输至channel后,接着sink会对数据进行读取;
[0037] ③UnificationSink与SupplySink一致,通过继承AbstractSink自定义实现,配置内容也与SupplySink相似,只是使用unification*为前缀,数据标准化后,同样进行端口发送;
[0038] 第五步,数据输出Agent实现,过程如下:
[0039] 5.1)公共信息提取
[0040] 数据集成的最后,需要对数据进行存储,使用Mysql数据库作为校内集成数据的存储中心,通过在sink中提取输出操作的公共信息控制Agent的输出行为,提取内容包括数据库连接信息url、user、password等;
[0041] 5.2)输出Agent执行过程。
[0042] 进一步,所述5.2)的过程如下:
[0043] ①将source的type配置为arvo,从本主机的相应端口中将数据读出;
[0044] ②source读取数据传输至channel后,接着sink会对数据进行读取;
[0045] ③StorageMysqlSink是对Mysql数据库实现的输出程序,可通过自定义配置url、user、password、table指定输出的数据表连接;通过position、colume指定数据输出的具体位置与列名。
[0046] 本发明的技术构思为:在逻辑上,Flume把一个Agent表示一个处理单元,用于从监控的数据源中采集数据、并可靠的传递至目的地,为了保证数据传输过程的可靠与高效,Agent将处理过程划分为三个部分,分别代表着数据的获取、中转和输出,即Source、Channel和Sink;Source组件负责对多种数据源进行监控,并将监控期间数据源新增的数据进行采集、处理后发送至Channel组件中;Channel组件是数据传输过程中的暂存通道,它的出现是为了保证数据传输的可靠性;当Source组件发送数据至Channel组件后,Channel组件会对数据进行记录,直至Sink组件消费掉暂存的数据后,暂存数据才会被删除;通过Channel组件的中转,也可解决读取与输出速率不一的问题,Sink组件负责数据的发送工作,它会将数据从Channel中取出,并发送至指定的目的地。
[0047] 进一步,对于不同层的Agent实现,通过提取公共信息的方式,改写了source或者sink的具体功能,使source或者sink成为一个可重复利用的单元;接着就可以利用配置文件组装Agent,使Agent完成具体的功能,从而实现了可配置化的数据集成需求。
[0048] 所述方法包括以下步骤:第一步,针对每一层的架构功能特点,实现可配置化的Agent处理单元;第二步,编写具体的配置文件控制Agent具体的行为,使其完成具体的功能;第三步,通过端口转发的方式将多个Agent的处理操作进行连接,协作实现数据的集成操作,即每一层操作由一个或者多个Flume Agent实现,通过不同Agent之间的连接合作,实现数据的集成功能。
[0049] 原始数据的集成需要对异构数据进行统一的清洗、补全、标准化等操作,使其符合相关数据标准。因此,将数据集成操作分为了数据采集层、数据清洗层、数据补充层、数据标准化层、数据输出层。通过每一层的处理操作,使图书馆数据完成汇聚;但是面对不同图书馆的数据集成实现,若基于业务进行特定开发实现,则多个图书馆的数据集成工作量将大大减缓云平台的建设。因此,面对数据集成工作,应实现可配置化的数据集成功能,加快工作效率。
[0050] 本发明的有益效果为:对图书馆的异构数据进行高校内的快速集成,搭建高校各自的数据集成中心;加快工作效率。附图说明
[0051] 图1为Agent设计架构图。一个Agent由Source、Channel和Sink组成,对应用来实现数据的获取、中转和输出功能。
[0052] 图2为Flume数据集成架构图。

具体实施方式

[0053] 下面结合附图对本发明作进一步描述。
[0054] 参照图1和图2,一种基于Flume的可配置数据集成方法,包括以下步骤:
[0055] 第一步,数据采集Agent实现,过程如下:
[0056] 1.1)公共信息提取
[0057] 数据采集工作需应对不同的数据表,在source中提取抽取操作的公共信息,提取内容包括数据库连接url、账户user、密码password、表名tablename、sql语句select、轮询周期delay、读取数量incremental.value、自增列column.name和状态文件status.file等,通过改写的source,使数据的抽取操作可配置化;
[0058] 1.2)采集Agent执行过程
[0059] ①当Agent启动时,Agent中的source从启动配置文件中读取上文提取的公共信息,连接对应的数据库,并控制自身的数据表轮询操作;
[0060] ②source继续从状态文件status.file中读取上一次读取数据的位置,第一次读取则从0开始读取,当数据新增时,即数据的自增列值column.name大于状态文件中的值,source就会将数据读取并传输至channel;
[0061] ③当新增的数据发送至channel之后,sink会进行读出,由于采集层需要与其它层配合,因此对于sink使用avro端口进行实现,实现过程是在配置文件中将sink的type配置为avro,同时配置发送主机的hostname、port;这样sink就会根据配置信息将数据发送至指定的主机端口,sink发送成功后,状态文件的值就会改变,source即可开始下一次的数据抽取工作;
[0062] 第二步,数据清洗Agent实现,过程如下:
[0063] 2.1)公共信息提取
[0064] 当数据被采集层发送至清洗层后,需要对不符合要求的数据进行清洗,通过在sink中提取清洗操作的公共信息控制Agent的清洗行为,提取内容包括位置信息cleandateposition与清洗值cleandatevalue,通过改写sink,使得数据清洗功能可配置化;
[0065] 2.2)清洗Agent执行过程
[0066] ①在一层中,Agent将数据发送到了localhost的10000端口,因此,在清洗Agent的source实现中,可将type设置为avro,同时配置bind与port,source即可对上一层的发送数据进行监听读取;
[0067] ②source读取到数据并传输至channel后,sink会对数据进行读取,[0068] ③sink读取后,需要进行真正意义的数据清洗工作,此部分由自定义的类CleanSink实现。它继承于AbstractSink,其中的configure方法,可以读取Agent的配置信息。这里使用自定义配置cleandateposition与cleandatevalue,它们指定了字段在数据中的位置与清洗标准值,当数据在位置cleandateposition上的值为cleandatevalue时,sink就会对数据进行剔除,接着,对于符合要求的数据继续进行端口的转发,配置内容与上一层相同;
[0069] 第三步,数据补充Agent实现,过程如下:
[0070] 3.1)公共信息提取
[0071] 在数据补充层通常使用外键等信息对数据中缺失的字段进行补充,通过在sink中提取补充操作的公共信息控制Agent的补充行为,提取内容包括补充位置信息supplyfrom、数据库连接信息supplyurl、supplyuser、supplypassword、supplytablename、外键信息supplyrelation和关联字段信息supplycolumn;
[0072] 3.2)补充Agent执行过程
[0073] ①与前文实现类似,补充Agent的source实现中,将type设置为avro,同时配置bind与port,即可对上一层的发送数据进行监听读取;
[0074] ②source读取到数据并传输至channel后,sink会对数据进行读取;
[0075] ③sink由自定义类SupplySink实现,其与CleanSink一致,通过继承AbstractSink自定义实现,其中的configure方法,可以读取Agent的配置信息;在配置内容中,使用字段supplyfrom指定数据中外键字段位置,如6指读者account的位置;接着使用字段supplyurl、supplyuser、supplypassword、supplytablename关联上数据补充的来源表,如用户表student;然后使用字段supplyrelation指定关联的对应信息,如读者account对应上用户表student的account字段;最后使用字段supplycolumn指定需要读出的读者信息,如用户表student的name、sex字段等,对于补充后的数据,继续进行端口发送;
[0076] ④通过上述配置,可实现一张表的数据关联及补充,接下来,对于多张表的关联补充,只需要将多个补充Agent通过端口转发的方式进行连接即可实现数据的完全补充;
[0077] 第四步,数据标准化Agent实现,过程如下:
[0078] 4.1)数据标准化策略
[0079] 得到需要的所有字段信息后,系统需要对有表达差异的数据进行标准化,使用的标准化策略与补全策略类似,具操作是通过人工的方式建立数据标准表,再提取Agent连接数据表的标准信息对数据项进行替换;
[0080] 以学院举例,操作如下:首先,建立数据标准表z_academy_org,其记录了云平台对学院的标准设定;接下来,需要人工的将某一高校的学院表academy与标准表z_academy_org建立一一对应的关系;最后,使用关联查询的方式,对学院信息进行替换;
[0081] 4.2)标准化Agent执行过程
[0082] ①标准化Agent的source实现与上文相同,将type设置为avro,同时配置bind与port,即可对上一层的发送数据进行监听读取;
[0083] ②source读取到数据传输至channel后,接着sink会对数据进行读取;
[0084] ③UnificationSink与SupplySink一致,通过继承AbstractSink自定义实现,配置内容也与SupplySink相似,只是使用unification*为前缀,数据标准化后,同样进行端口发送;
[0085] 第五步,数据输出Agent实现,过程如下:
[0086] 5.1)公共信息提取
[0087] 数据集成的最后,需要对数据进行存储,使用Mysql数据库作为校内集成数据的存储中心,通过在sink中提取输出操作的公共信息控制Agent的输出行为,提取内容包括数据库连接信息url、user、password等;
[0088] 5.2)输出Agent执行过程
[0089] ①将source的type配置为arvo,从本主机的相应端口中将数据读出;
[0090] ②source读取数据传输至channel后,接着sink会对数据进行读取;
[0091] ③StorageMysqlSink是对Mysql数据库实现的输出程序,可通过自定义配置url、user、password、table指定输出的数据表连接;通过position、colume指定数据输出的具体位置与列名。
[0092] 图2为Flume数据集成架构图。其中,(1)数据采集层:数据采集层主要负责应对多种异构数据源的数据采集工作,对图书馆历史数据与新增数据进行抽取。(2)数据清洗层:数据清洗层主要负责清洗数据,面对不符合要求的数据,需要对数据进行清洗剔除。(3)数据补充层:数据补充层主要负责将原始数据中没有的数据项,根据外键等关联信息,进行合理的补全。(4)数据标准化层:数据标准化层主要负责根据数据标准,将原始数据中不符合标准的数据进行转换。(5)数据输出层:数据输出层与数据采集层类似,其主要负责将数据存储至校内数据存储中心。
[0093] 需要指出的是,清洗、补充、标准化等Agent是通过端口转发的方式进行组合的。因此,数据集成的执行过程并不需要按固定的格式进行,可根据业务数据的需要自定义配置。例如在清洗后,先进行标准化再执行补充。在面对特定高校的特殊要求时,也可自行实现相应的Agent单元,并在上述层级间进行插入。基于Agent的配置能力,校内集成系统可以实现灵活的数据集成功能。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈