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

文档序号:20616985发布日期:2020-05-06 20:16阅读:207来源:国知局
本发明涉及数据采集、清洗、补充,是一种基于flume的异构数据标准化的可配置集成方法。
背景技术
::随着科学技术的蓬勃发展与信息的多元化,高校学生对文献等资源的需求也开始变得更为广泛,这对高校图书馆提出了更高的要求,但是面对高校学生多变的需求,单纯地提高图书馆的馆藏能力显得杯水车薪。在这样的矛盾下,“图书馆联盟”的理念应运而生。其基于互惠共赢的目的,希望通过合作、共享的方式,增强高校图书馆之间的交流,使得高校图书馆之间可以通过共享模式去满足高校学生的资源需求。但是在整体上,我国的“图书馆联盟”建设工作依然停留在初级阶段,高校图书馆之间往往存在自治现象严重,图书馆间的交流了解不足等问题。对此有学者提出对于图书馆资源共享工作建立统一的资源管理系统,但是这种实现方式往往需要改变原来各高校图书馆的自治现状,通过多方协作的方式对各高校图书馆内多种资源进行重新整合,其所带来的消耗与影响往往十分巨大。基于上述问题,众多学者提出在不改变图书馆原有系统的基础上,通过共享信息数据增进图书馆间的了解,由高校自行决定共享工作,增强资源共享的灵活性。但是由于缺乏有效的规划,高校图书馆各自围绕着自身业务建立了多种数据管理系统,对于如何建立一个信息共享平台,增进图书馆间的交互依然存在着以下问题急需解决:高校图书馆间的数据异构。由于高校图书馆管理系统往往由不同企业自主开发实现,因此不同管理系统间相似度极小,数据在存储方式、组织结构、内容定义等方面均存在较大差异,而统一的数据标准是图书馆间进行信息交互的基础,因此如何在不改变图书馆现状的情况下,对高校内的数据进行集成处理是共享平台构建需要解决的问题。技术实现要素:为了克服现有技术的不足,本发明在定义统一的集成数据标准上,通过自定义实现基于flume的数据集成工具包,提出一种可配置的数据集成方法,对图书馆的异构数据进行高校内的快速集成,搭建高校各自的数据集成中心。为了解决上述技术问题,本发明提供如下的技术方案:一种基于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连接数据表的标准信息对数据项进行替换;以学院举例,操作如下:首先,建立数据标准表z_academy_org,其记录了云平台对学院的标准设定;接下来,需要人工的将某一高校的学院表academy与标准表z_academy_org建立一一对应的关系;最后,使用关联查询的方式,对学院信息进行替换;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执行过程。进一步,所述5.2)的过程如下:①将source的type配置为arvo,从本主机的相应端口中将数据读出;②source读取数据传输至channel后,接着sink会对数据进行读取;③storagemysqlsink是对mysql数据库实现的输出程序,可通过自定义配置url、user、password、table指定输出的数据表连接;通过position、colume指定数据输出的具体位置与列名。本发明的技术构思为:在逻辑上,flume把一个agent表示一个处理单元,用于从监控的数据源中采集数据、并可靠的传递至目的地,为了保证数据传输过程的可靠与高效,agent将处理过程划分为三个部分,分别代表着数据的获取、中转和输出,即source、channel和sink;source组件负责对多种数据源进行监控,并将监控期间数据源新增的数据进行采集、处理后发送至channel组件中;channel组件是数据传输过程中的暂存通道,它的出现是为了保证数据传输的可靠性;当source组件发送数据至channel组件后,channel组件会对数据进行记录,直至sink组件消费掉暂存的数据后,暂存数据才会被删除;通过channel组件的中转,也可解决读取与输出速率不一的问题,sink组件负责数据的发送工作,它会将数据从channel中取出,并发送至指定的目的地。进一步,对于不同层的agent实现,通过提取公共信息的方式,改写了source或者sink的具体功能,使source或者sink成为一个可重复利用的单元;接着就可以利用配置文件组装agent,使agent完成具体的功能,从而实现了可配置化的数据集成需求。所述方法包括以下步骤:第一步,针对每一层的架构功能特点,实现可配置化的agent处理单元;第二步,编写具体的配置文件控制agent具体的行为,使其完成具体的功能;第三步,通过端口转发的方式将多个agent的处理操作进行连接,协作实现数据的集成操作,即每一层操作由一个或者多个flumeagent实现,通过不同agent之间的连接合作,实现数据的集成功能。原始数据的集成需要对异构数据进行统一的清洗、补全、标准化等操作,使其符合相关数据标准。因此,将数据集成操作分为了数据采集层、数据清洗层、数据补充层、数据标准化层、数据输出层。通过每一层的处理操作,使图书馆数据完成汇聚;但是面对不同图书馆的数据集成实现,若基于业务进行特定开发实现,则多个图书馆的数据集成工作量将大大减缓云平台的建设。因此,面对数据集成工作,应实现可配置化的数据集成功能,加快工作效率。本发明的有益效果为:对图书馆的异构数据进行高校内的快速集成,搭建高校各自的数据集成中心;加快工作效率。附图说明图1为agent设计架构图。一个agent由source、channel和sink组成,对应用来实现数据的获取、中转和输出功能。图2为flume数据集成架构图。具体实施方式下面结合附图对本发明作进一步描述。参照图1和图2,一种基于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指定数据中外键字段位置,如6指读者account的位置;接着使用字段supplyurl、supplyuser、supplypassword、supplytablename关联上数据补充的来源表,如用户表student;然后使用字段supplyrelation指定关联的对应信息,如读者account对应上用户表student的account字段;最后使用字段supplycolumn指定需要读出的读者信息,如用户表student的name、sex字段等,对于补充后的数据,继续进行端口发送;④通过上述配置,可实现一张表的数据关联及补充,接下来,对于多张表的关联补充,只需要将多个补充agent通过端口转发的方式进行连接即可实现数据的完全补充;第四步,数据标准化agent实现,过程如下:4.1)数据标准化策略得到需要的所有字段信息后,系统需要对有表达差异的数据进行标准化,使用的标准化策略与补全策略类似,具操作是通过人工的方式建立数据标准表,再提取agent连接数据表的标准信息对数据项进行替换;以学院举例,操作如下:首先,建立数据标准表z_academy_org,其记录了云平台对学院的标准设定;接下来,需要人工的将某一高校的学院表academy与标准表z_academy_org建立一一对应的关系;最后,使用关联查询的方式,对学院信息进行替换;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为flume数据集成架构图。其中,(1)数据采集层:数据采集层主要负责应对多种异构数据源的数据采集工作,对图书馆历史数据与新增数据进行抽取。(2)数据清洗层:数据清洗层主要负责清洗数据,面对不符合要求的数据,需要对数据进行清洗剔除。(3)数据补充层:数据补充层主要负责将原始数据中没有的数据项,根据外键等关联信息,进行合理的补全。(4)数据标准化层:数据标准化层主要负责根据数据标准,将原始数据中不符合标准的数据进行转换。(5)数据输出层:数据输出层与数据采集层类似,其主要负责将数据存储至校内数据存储中心。需要指出的是,清洗、补充、标准化等agent是通过端口转发的方式进行组合的。因此,数据集成的执行过程并不需要按固定的格式进行,可根据业务数据的需要自定义配置。例如在清洗后,先进行标准化再执行补充。在面对特定高校的特殊要求时,也可自行实现相应的agent单元,并在上述层级间进行插入。基于agent的配置能力,校内集成系统可以实现灵活的数据集成功能。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1