一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Flink的可视化作业生成解决方法与流程

2022-11-14 13:35:07 来源:中国专利 TAG:

一种基于flink的可视化作业生成解决方法
技术领域
1.本发明涉及大数据技术领域,更具体地说,本发明涉及一种基于flink的可视化作业生成解决方法。


背景技术:

2.随着大数据的发展,数据仓库的建设已经作为大中型企业的必经之路。
3.数据仓库(data warehouse)是伴随着企业信息化发展起来的,在企业信息化的过程中,随着信息化工具的升级和新工具的应用,数据量变得越来越大,数据格式越来越多,决策要求越来越苛刻。出于企业的分析性报告和决策支持目的而创建数仓(数仓:存放数据的仓库,它集合了各个业务系统的数据。从逻辑上理解,数据库和数仓没有区别,都是通过数据库软件实现存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大。他们最主要的区别在于,传统事务型数据库如mysql用于做联机事务处理(oltp),例如交易事件的发生等;而数据仓库主要用于联机分析处理(olap),例如出报表等),对多样的业务数据进行筛选与整合。数据仓库通过从不同来源收集和管理数据,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。它为企业提供一定的bi(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。它是技术和组件的混合体,有助于战略性地使用数据。
4.数据仓库有两个环节:数据仓库的构建与数据仓库的应用。早期数据仓库构建主要指的是把企业的业务数据库如erp、crm、scm等数据按照决策分析的要求建模并汇总到数据仓库引擎中,其应用以报表为主,目的是支持管理层和业务人员决策(中长期策略性决策)。随着业务和环境的发展,这两方面都在发生着剧烈变化。随着it技术走向互联网、移动化,数据源变得越来越丰富,在原来业务数据库的基础上出现了非结构化数据,比如网站log,iot设备数据,app埋点数据等,这些数据量比以往结构化的数据大了几个量级,对etl过程、存储都提出了更高的要求。
5.互联网的在线特性也将业务需求推向了实时化,随时根据当前客户行为而调整策略变得越来越常见,比如大促过程中库存管理,运营管理等(即既有中远期策略型,也有短期操作型);同时公司业务互联网化之后导致同时服务的客户剧增,有些情况人工难以完全处理,这就需要机器自动决策,比如欺诈检测和用户审核。
6.数据仓库是一个过程而不是一个项目。数据仓库系统是一个信息提供平台,他从业务处理系统获得数据,主要以星型模型和雪花模型进行数据组织,并为用户提供各种手段从数据中获取信息和知识。从功能结构划分,数据仓库系统至少应该包含数据获取(data acquisition)、数据存储(data storage)、数据访问(data access)三个关键部分。
7.数据仓库一般针对某些主题的历史数据进行分析,支持管理决策,又被称为联机分析处理olap(on-line analytical processing)。建立olap应用之前,我们要想办法把各个独立系统的数据抽取出来,经过一定的转换和过滤,存放到一个集中的地方,成为数据仓库。这个抽取,转换,加载的过程叫etl(extract,transform,load),目的是将企业中分散、
零乱、标准不统一的数据整合到一起。etl是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持etl的正常和稳定。
8.数据架构经历了最初的传统数仓架构-》离线数仓库-》离线大数据架构、lambda架构、kappa架构以及flink(一种流批一体的分布式计算引擎,被广泛应用于实时数仓的建设和数据处理中)的流批一体(一种架构思想,指同一个业务,使用同一套代码逻辑,在既可以满足流处理计算同时也可以满足批处理任务的计算)架构。随着数据架构技术不断演进,flink作为流批一体的分布式计算引擎,让开发人员能以最自然、最小的成本完成实时计算。flink也作为数据仓库建设中的重要角色,被广泛应用于实时数仓和离线数仓的建设中。
9.flink作为一个优秀的分布式计算引擎,涵盖了etl的方方面面。flink不仅支持多种数据源,如mysql,kafka,文件等。还支持多种端到端的精确一次时间语义,还有窗口,状态等优秀的设计。但是,对于不同的数据源来说,所需要的入参繁多,除了基本的参数外,可能还需要一些额外的配置来确保数据的可靠性。flink作业的部署方式多种多样,需要的参数也不尽相同,这对于作业指令的拼接,无疑是一个繁琐的事情。在数仓的建设中,大部分项目都会碰到形如数据格式化,维表关联,时间处理,pv,uv等数据处理需求,这些需求是繁琐的重复的。


技术实现要素:

10.为了克服现有技术的上述缺陷,本发明提供了一种基于flink的可视化作业生成解决方法。
11.为实现上述目的,本发明提供如下技术方案:一种基于flink的可视化作业生成解决方法,包括参数的属性、组件、组件实现工厂和可视化作业画布四部分,设计了一套以组件为核心的可视化作业生成解决方案:
12.组件包含了组件信息和参数的属性列表信息;
13.组件对应的组件信息中,包含却不仅限于当前组件在页面上的具体展现形式、展现位置、组件类型和数据类型;
14.组件类型有环境类组件和操作类组件两种;
15.组件信息中的组件类型,设置了组件的连线规则;
16.组件对应的参数的属性列表中,包含了组件卡片内的参数样式,前端根据参数的属性列表进行初始化,会生成对应的表单;
17.组件对应的具体实现,在其对应的组件实现工厂完成。
18.在一个优选地实施方式中,所述组件的连线规则设置为source类型组件作为dag的起点,不能有组件接入;sink类型组件作为dag的终点,不能有组件输出。
19.在一个优选地实施方式中,根据组件对应的参数的属性列表中的参数,可以设置要处理的数据以及数据的处理方式。
20.在一个优选地实施方式中,所述操作类组件又可拆分为source,transform,sink三大类。
21.本发明的技术效果和优点:
22.1、本发明通过采用作业画布的形式,数据流转流程可视化;支持多种数据源,数据源参数覆盖全面,可视化,支持自定义配置;支持多种数据下沉库,参数覆盖全面,可视化,支持自定义配置;转换组件丰富多样,涵盖维表关联和多种常见的统计需求;转换组件二级分类,方面查找使用对应的数据处理需求
23.2、本发明支持同一个作业多个数据源以及多路输出;支持flink的大部分功能,如窗口,侧输出流,多流合并等;支持多种部署模式,简化了flink部署指令的创建过程。
附图说明
24.图1为本发明的整体工作流程示意图。
25.图2为本发明的flink程序框架图。
26.图3为本发明的组件数据处理逻辑图。
27.图4为本发明的乱序数据处理示意图。
具体实施方式
28.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
29.本发明提供了一种基于flink的可视化作业生成解决方法,包括参数的属性(组件的实现工厂需要一些参数来完成具体的实现逻辑,这些参数被封装成一个个属性,属性中包含了表单样式,是否必填等信息。前端通过解析这些属性,会转换为组件卡片内对应的参数)、组件(是整个解决方案的核心部分,是dag的节点,也是数据处理过程的基本单元)、组件实现工厂(是组件对应数据处理的具体逻辑实现)和可视化作业画布四部分,设计了一套以组件为核心的可视化作业生成解决方案;
30.组件包含了组件信息和参数的属性列表信息;
31.组件对应的组件信息中,包含却不仅限于当前组件在页面上的具体展现形式、展现位置、组件类型和数据类型;
32.组件类型有环境类组件和操作类组件两种,其中操作类组件又可拆分为source(flink的三大逻辑结构之一,用于加载/创建初始数据),transform(flink的三大逻辑结构之一,用于指定数据相关的转换,即处理逻辑),sink(flink的三大逻辑结构之一,用于把处理后的数据输出到外部系统中)三大类;
33.组件信息中的组件类型,设置了组件的连线规则:source类型组件作为dag(全称directed acyclic graph,简称dag。作业中的组件以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止)的起点,不能有组件接入;sink类型组件作为dag的终点,不能有组件输出;
34.组件对应的参数的属性列表中,包含了组件卡片内的参数样式,前端根据参数的属性列表进行初始化,会生成对应的表单,根据参数,可以设置要处理的数据以及数据的处理方式;
35.组件对应的具体实现,在其对应的组件实现工厂完成。
36.如图1-4所示的,实施方式具体为:
37.flink的程序框架,看起来像一个处理数据的常规程序;每个程序由相同的基本部分组成:
38.1.获取一个执行环境(execution environment)
39.2.加载/创建初始数据
40.3.指定数据相关的转换
41.4.指定计算结果的存储位置
42.5.触发程序执行
43.以附图2为例,加载kafka中的数据和mysql中的数据,将mysql数据源中的数据进行一定的转换,转换后的数据和kafka中的数据进行关联,将关联后的计算结果存储到es中;这是etl过程中很常见的流程,亦是flink开发过程中固定的代码结构,即:创建执行环境-》加载数据源-》指定数据相关的转换-》将结算结果存储到指定位置-》最后触发程序执行;
44.将这个流程中的每个节点进行封装,以组件的形式完成对应的功能;根据flink的程序框架将组件分为两大类:
45.1.环境组件:如上述流程中的创建执行环境和触发程序执行,分别封装为执行环境组件和资源组件;在执行环境组件中,可以设置整个作业的心跳策略,重启策略,状态后端策略等;在资源组件中,可以设置作业对应的任务名,部署模式,任务并行度,jobmanager程序所使用的所有内存,taskmanager程序所使用的所有内存,每个taskmanager提供的任务槽的数量等;
46.2.操作组件:如上述流程中的加载初始数据,指定数据的相关转换,指定计算结果的存储位置,这些归类为操作组件,被用于在画布上拼接作业;其中,初始数据被封装为source类型组件,不同的数据源对应各自的source组件,如kafkasource、sockertsource、filesource等;数据的相关转换被封装为transform类型组件,每一个transform组件都对应了一种数据处理方法,比如非结构化数据格式化为json、时间格式化、字段过滤等;此外由于转换组件多种多样,对转换组件进行了二级分类,比如通用型、维表关联型、统计型;计算结果的存储被封装为sink类型组件,不同的数据输出端对应了各自的sink组件,如kafkasink、filesink、jdbcsink等;
47.画布是任务调度、自定义流程中经常用到的设计,根据具体需求,将一个个节点通过连线组成一个dag,可以最大程度的保证设计的灵活性;通常来说,dag上的节点,有以下三类:有出无入,有入有出,有入无出;即,作为dag的起点位置,不应有线接入,dag的终点位置,不应有线输出,中间的流程节点可以有线接入和输出;
48.本方案在此基础上,设计了一套操作组件的连线规则,尽可能的保证了作业的灵活性;source类型组件,对应了作业的起点位置,只能有输出线;同一个source组件,可以有多个输出线;sink类型组件,对应了作业的终点位置,只能有输入线;同一个sink组件,只能有一个输入线;transform类型组件,对应了作业的中间处理过程,有输入线和输出线;同一个transform组件,可以有多个输出线,输入线有:只能有一个,只能有两个和两个及以上三种;
49.此外,如图3所示,还有一个数据类型的概念;因为每个组件是对应了具体的数据
处理逻辑的,数据类型不同,调用的代码逻辑也不同;常见的数据类型有string、json等;每个组件会根据设置的数据类型去调用对应的代码处理逻辑;比如source类型组件,通过指定具体的数据类型,即可按指定的数据类型去解析原始数据;sink类型组件,通过指定具体的数据类型,就可以知道如何解析并将数据写入对应的olap库;另不难发现,作为transform类型组件,同时包含了数据的输入和输出,若有n种数据类型,要全部支持这n种数据类型,transform类型组件就需要实现n^2次,这无疑是繁琐的;因此,本方案提出了数据转换类型的概念,也就是数据类型从a转换为b,数据转换类型天然的包含了数据输入类型和数据输出类型;
50.基于数据类型的限制,一般情况下,当上游组件的数据输出类型和下游组件的数据输入类型一致时,才能表示,下游组件处理的是上游组件处理后的数据,两个组件才能连线;换言之,若设置m1组件的数据输出类型为a,那么相对应的,m2组件的数据输入类型也必须是a,组件m1才能连接到组件m2;
51.除了上述描述中,上游组件的数据输出类型和下游组件的数据输入类型需要保持一致的情况,还有一种特殊情况,如图4所示;在flink基于事件时间开窗聚合时,常常会遇到乱序数据,对于乱序数据的处理,flink支持设置乱序时间范围和允许迟到时间,若在这两个设置之外,仍然有迟到数据,flink支持采用侧输出流的形式,将这些迟到数据输出到旁路,供开发人员对这些迟到数据进行额外的处理;显然,这里的迟到数据会被flink框架进行原样输出,这就和上面的连线要求有出入了;因为这些迟到数据没有经过数据处理的代码,也就是说,迟到数据的数据格式,和进入当前组件的数据格式是一致的;因此,本方案除了上述的一般组件外,还提供了一个这样的组件:组件的数据输入类型与上游组件的数据输入类型一致,两个组件才能相连;
52.flink框架支持多种数据源,如kafka、rabbitmq、pulsar、socket、filesystem等;本方案将每一种数据源按类型封装在一个个组件中,这些组件被归置在source类型组件下,供开发人员使用;
53.数据处理过程中,常见的处理需求有如:时间格式化、非结构化数据转结构化数据、过滤等;本方案有时间格式化组件、行过滤组件、值过滤组件、格式化组件等;这些组件被归置在transform类型组件的通用目录下;
54.flink框架支持多流合并的需求,常见的有多个数据源的数据合并到一起,维表关联等;对于多流合并的需求,本方案提供了一种连接组件,可以连接多个上游组件的输出数据,并将结果原样输出,供下游组件处理;对于维表关联,本方案提供了常见的维表库,如hdfs文件注册、数据库查询、hbase、kafka等;同时对不同的维表库,采用了多种维表关联方案,如缓存、定期加载整张表、同步查询、异步查询、预加载等;每一种维表库都对应了一个组件,归置在transform类型组件的维表目录下;
55.在etl建设过程中,常见的统计需求有形如pv、uv、topn、上下线告警等,这些统计组件被归置在transform类型组件的统计目录下;
56.flink框架支持多种输出库,如kafka、elasticsearch、filesystem、jdbc等;本方案将每一种输出库按类型封装在一个个组件中,这些组件被归置在sink类型组件下,供开发人员使用;
57.此外,本方案支持自定义组件,支持开发人员调用sdk,设计自己的组件库,极大的
保证了整个框架的灵活性。
58.最后应说明的几点是:首先,在本技术的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变,则相对位置关系可能发生改变;
59.其次:本发明公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计,在不冲突情况下,本发明同一实施例及不同实施例可以相互组合;
60.最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献