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

一种基于标准SQL的流式数据清洗转换方法和系统与流程

2021-12-07 21:44:00 来源:中国专利 TAG:

一种基于标准sql的流式数据清洗转换方法和系统
技术领域
1.本发明涉及数据治理领域,具体来说,涉及一种基于标准sql的流式数据清洗转换方法和系统。


背景技术:

2.随着互联网技术的发展,网络中存在的数据以指数方式增长,但各个网站的数据千差万别,在数据爆发式增长的形势下,数据价值发挥越来越显得紧迫和重要。只有建立完整的数据清洗转换才能保障数据内容的质量,才能真正有效的挖掘数据价值,提升竞争力。
3.因此,如何高效、快速地将各种异构数据清洗、转换,更好地服务于用户成为亟待解决的问题。本发明结合java、sql、groovy等多种技术提供一种高效、便捷、灵活的数据清洗转换方式,帮助用户更全面、更系统地了解数据。
4.针对相关技术中的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.针对相关技术中的问题,本发明提出一种基于标准sql的流式数据清洗转换方法和系统,以克服现有相关技术所存在的上述技术问题。
6.本发明的技术方案是这样实现的:
7.根据本发明的一个方面,提供了一种基于标准sql的流式数据清洗转换方法,包括以下步骤:
8.s1、系统初始化,针对系统库、工作线程、groovy函数线程、sql解析引擎进行初始化操作;
9.s2、在上述初始化完成以后,系统开始进行数据清洗转换的工作。
10.进一步的,所述步骤s1系统初始化,针对系统库、工作线程、groovy函数线程、sql解析引擎进行初始化操作包括以下步骤:
11.s101,加载配置文件;
12.s102,初始化系统库;
13.s103,初始化工作线程;
14.s104,初始化groovy函数线程;
15.s105,初始化sql解析引擎;
16.s106,加载内置算子库。
17.进一步的,所述步骤s2在上述初始化完成以后,系统开始进行数据清洗转换的工作包括以下步骤:
18.s201输入、输出schema加载,输入数据加载;
19.s202,提交groovy类、函数;
20.s203,初始化groovy类、函数;
21.s204,采集sql语句;
22.s205,解析sql语句;
23.s206,调用groovy类、函数;
24.s207,数据重组。
25.进一步的,所述步骤s101加载配置文件中,所述加载配置文件,是系统加载配置文件中的配置信息;
26.所述步骤s102初始化系统库中,所述初始化系统库,是系统根据配置文件中配置的数据库信息,使用java cl ient与数据库建立连接;
27.所述步骤s103初始化工作线程中,所述初始化工作线程,是系统根据配置文件中配置的工作线程数、线程配置信息初始化线程池;
28.所述步骤s104初始化groovy函数线程中,所述初始化groovy函数线程,是系统初始化线程用于实时、定时读取groovy类、函数;
29.所述步骤s105初始化sql解析引擎中,所述初始化sql解析引擎,是将sql解析引擎加载到系统中;
30.所述步骤s106加载内置算子库中,所述加载内置算子库,是系统使用初始化groovy函数线程读取系统存储库中的内置算子groovy类、函数信息,加载到系统中。
31.进一步的,所述步骤s201,输入、输出schema加载,输入数据加载中,所述输入、输出schema加载,输入数据加载,是系统获取用户提交的输入源、输入源信息,用于系统解析数据、重组数据;
32.所述步骤s202提交groovy类、函数中,所述采集groovy类、函数,是系统采集用户创建的数据清洗任务配置的groovy类、函数;
33.所述步骤s203初始化groovy类、函数中,所述初始化groovy类、函数,是系统调用groovyclassloader方法对提交的groovy类、函数进行初始化得到groovy类对应的对象并把函数名和对象做映射关系保存在内存中;
34.所述步骤s204,采集sql语句中,所述采集sql语句,是系统采集用户创建的数据清洗任务配置的sql语句。
35.所述步骤s205解析sql语句中,所述解析sql语句,是使用anltr4语法分析工具对sql语句进行解析,分别得到字段映射关系、函数名、函数参数。
36.所述步骤s206调用groovy类、函数中,所述调用groovy类、函数,是指通过上步sql解析出来的函数名查询对应的已初始化的groovy类,传入函数参数并调用。
37.所述步骤s207数据重组中,所述数据重组,是根据输出的schema字段对源数据、计算数据进行筛选并重新组合数据格式。
38.进一步的,所述步骤s202,提交groovy类、函数中,groovy类、函数的编写需符合groovy语法,设计函数参数、返回值、函数实现逻辑,在函数逻辑中可以实现对字段拆分、脱敏、去重、调用外部接口等清洗转换方法,并将清洗转换后的结果字段组合json作为函数返回值返回。
39.进一步的,所述步骤s204采集sql语句中,sql语句中的字段映射关系包括字段直接映射方式和函数计算方式。
40.根据本发明的另一方面,提供了一种基于标准sql的流式数据清洗转换系统,包括系统初始化模块、内置算子库、sql解析引擎、提交sql模块、提交groovy模块、groovy类初始
化模块、groovy执行模块、数据重组模块、数据输入和输出模块;
41.其中,所述系统初始化模块主要是系统启动之后对工作线程、采集线程、数据库、流式数据组件等系统配置创建对应的线程、连接数据库、连接流式数据组件等初始化工作;
42.所述内置算子库主要是对系统中内置的算子库,包括字段拆分、字段填充、字段截取等,初始化加载到系统中,用户可以直接调用,不必再编写groovy类、函数;
43.所述sql解析引擎主要是对提交的sql语句进行解析,解析出字段映射关系、使用的函数名、函数参数等信息;
44.所述提交sql模块主要是用户提交sql语句,用于后续的sql解析;
45.所述提交groovy模块主要是用户提交groovy类、函数,存放在系统存储库中,用于后续的groovy初始化、调用;
46.所述groovy类初始化模块在java程序中初始化内置算子库、用户提交的groovy类代码;
47.所述groovy执行模块主要是根据sql解析模块中解析出来的函数名、函数参数确定需要调用groovy类初始化模块中已初始化的类并传入参数调用groovy函数;
48.所述数据重组模块主要是根据输出schema将经过groovy函数返回的数据与原始数据重新组合输出字段结构体;
49.所述数据输入和输出模块主要是获取待转换的数据及schema数据,输出数据的schema;输出转换后的数据。
50.可选的,所述sql解析引擎使用antlr4作为基础解析库,使用spark自带的.g4文件,antlr4根据这个.g4生成对应的词法分析类和语法分析类,同时还使用了访问者模式,用以构建语法树,使用访问者模式分别查找字段对应关系、函数、where条件语句。
51.本发明的有益效果为:更加高效、便捷、灵活地对流式数据清洗、转换,筛选符合条件的数据,让数据对用户更加有价值。
52.本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。
附图说明
53.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
54.图1是根据本发明实施例的一种基于标准sql的流式数据清洗转换方法的流程图;
55.图2是根据本发明实施例的一种基于标准sql的流式数据清洗转换方法中步骤s1的流程图;
56.图3是根据本发明实施例的一种基于标准sql的流式数据清洗转换方法中步骤s2的流程图;
57.图4是根据本发明实施例的一种基于标准sql的流式数据清洗转换方法的整体架
构图;
58.图5是根据本发明实施例的一种基于标准sql的流式数据清洗转换方法的功能流程图;
59.图6是根据本发明实施例的一种基于标准sql的流式数据清洗转换方法的groovy类、函数样例图;
60.图7是根据本发明实施例的一种基于标准sql的流式数据清洗转换系统的框图。
具体实施方式
61.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
62.因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
64.在本发明的上述描述中,需要说明的是,术语“一侧”、“另一侧”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
65.此外,在描述本发明提供的一种基于标准sql的流式数据清洗转换方法和系统实现之前,先简要对发明中提到的术语进行说明:
66.1.标准sql
67.structured query language,访问关系型数据库的标准语言。
68.2.groovy函数
69.groovy是一种基于jvm(java虚拟机)的敏捷开发语言,groovy代码能够与java代码很好地结合,也能用于扩展现有代码。
70.3.流式数据
71.流式数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合。
72.4.数据清洗转换
73.数据清洗转换是指对数据进行条件筛选、删除重复数据、数据格式转换、数据计算等。
74.5.字段映射关系
75.字段映射关系是指源字段、目的字段之间的映射关系。
76.如图1

6所示,根据本发明的实施例,提供了一种基于标准sql的流式数据清洗转
换方法,包括以下步骤:
77.s1、系统初始化,针对系统库、工作线程、groovy函数线程、sql解析引擎进行初始化操作;
78.步骤s101,加载配置文件;
79.所述加载配置文件,是系统加载配置文件中的配置信息;
80.步骤s102,初始化系统库;
81.所述初始化系统库,是系统根据配置文件中配置的数据库信息,使用java client与数据库建立连接;
82.步骤s103,初始化工作线程;
83.所述初始化工作线程,是系统根据配置文件中配置的工作线程数、线程配置信息初始化线程池;
84.步骤s104,初始化groovy函数线程;
85.所述初始化groovy函数线程,是系统初始化线程用于实时、定时读取groovy类、函数;
86.步骤s105,初始化sql解析引擎;
87.所述初始化sql解析引擎,是将sql解析引擎加载到系统中;
88.步骤s106,加载内置算子库;
89.所述加载内置算子库,是系统使用初始化groovy函数线程读取系统存储库中的内置算子groovy类、函数信息,加载到系统中。
90.s2、在上述初始化完成以后,系统开始进行数据清洗转换的工作;
91.步骤s201,输入、输出schema加载,输入数据加载;
92.所述输入、输出schema加载,输入数据加载,是系统获取用户提交的输入源、输入源信息,用于系统解析数据、重组数据;
93.步骤s202,提交groovy类、函数;
94.所述采集groovy类、函数,是系统采集用户创建的数据清洗任务配置的groovy类、函数。groovy类、函数的编写需符合groovy语法,设计函数参数、返回值、函数实现逻辑。在函数逻辑中可以实现对字段拆分、脱敏、去重、调用外部接口等清洗转换方法,并将清洗转换后的结果字段组合json作为函数返回值返回;
95.步骤s203,初始化groovy类、函数;
96.所述初始化groovy类、函数,是系统调用groovyclassloader方法对提交的groovy类、函数进行初始化得到groovy类对应的对象并把函数名和对象做映射关系保存在内存中;
97.步骤s204,采集sql语句;
98.所述采集sql语句,是系统采集用户创建的数据清洗任务配置的sql语句。sql语句中的字段映射关系分为两个部分:1、字段直接映射方式;2、函数计算方式;
99.sql语句模板如下:
[0100][0101]
named_expression:具有指定名称的表达式。一般来说,它表示一个列表达式。
[0102]
语法:表达式[as][别名]
[0103]
from_item:指定查询的输入源。
[0104]
lateral view:lateral view子句与诸如burst之类的生成器函数一起使用,它们将生成包含一行或多行的虚拟表。横向视图将应用于每个原始输出行。
[0105]
where:根据提供的条件筛选from子句的结果
[0106]
以如下sql语句为例:
[0107][0108][0109]
约定select语句中t1._key as_key格式为字段直接映射方式,t2.source as source格式为需要函数计算方式,其中tmp as t1为源数据、lateral view json_tuple(conversion_blog(nrd,nrply,sent),'source','raw_cont')t2为通过计算后返回的数据,conversion_blog为需要调用的groovy函数名(已初始化成功),nrd、nrply、sent为groovy函数参数,source、raw_cont为groovy函数的返回值,where_ch=1为过滤条件;
[0110]
步骤s205,解析sql语句;
[0111]
所述解析sql语句,是使用anltr4语法分析工具对sql语句进行解析,分别得到字段映射关系、函数名、函数参数;
[0112]
以s203步骤中的sql为例,经sql解析之后字段映射关系为t1._key

>_key,t1._id

>_id,t1._spec

>_spec,t1._ch

>_ch,t1.gt

>gather_time,t2.source

>source,t2.raw_cont

>raw_cont,函数名为conversion_blog,函数参数为nrd、nrply、sent,过滤条
件为_ch=1;
[0113]
步骤s206,调用groovy类、函数;
[0114]
所述调用groovy类、函数,是指通过上步sql解析出来的函数名查询对应的已初始化的groovy类,传入函数参数并调用。
[0115]
步骤s207,数据重组;
[0116]
所述数据重组,是根据输出的schema字段对源数据(直接映射部分)、计算数据进行筛选并重新组合数据格式。
[0117]
如图7所示,根据本发明的另一个方面,提供了一种基于标准sql的流式数据清洗转换系统,包括系统初始化模块、内置算子库、sql解析引擎、提交sql模块、提交groovy模块、groovy类初始化模块、groovy执行模块、数据重组模块、数据输入和输出模块;
[0118]
其中,所述系统初始化模块主要是系统启动之后对工作线程、采集线程、数据库、流式数据组件等系统配置创建对应的线程、连接数据库、连接流式数据组件等初始化工作;
[0119]
所述内置算子库主要是对系统中内置的算子库,包括字段拆分、字段填充、字段截取等,初始化加载到系统中,用户可以直接调用,不必再编写groovy类、函数;
[0120]
所述sql解析引擎主要是对提交的sql语句进行解析,解析出字段映射关系、使用的函数名、函数参数等信息,所述sql解析引擎使用antlr4作为基础解析库,使用spark自带的.g4文件,antlr4根据这个.g4生成对应的词法分析类和语法分析类,同时还使用了访问者模式,用以构建语法树,使用访问者模式分别查找字段对应关系、函数、where条件语句;
[0121]
所述提交sql模块主要是用户提交sql语句,用于后续的sql解析;
[0122]
所述提交groovy模块主要是用户提交groovy类、函数,存放在系统存储库中,用于后续的groovy初始化、调用;
[0123]
所述groovy类初始化模块在java程序中初始化内置算子库、用户提交的groovy类代码;
[0124]
所述groovy执行模块主要是根据sql解析模块中解析出来的函数名、函数参数确定需要调用groovy类初始化模块中已初始化的类并传入参数调用groovy函数;
[0125]
所述数据重组模块主要是根据输出schema将经过groovy函数返回的数据与原始数据重新组合输出字段结构体;
[0126]
所述数据输入和输出模块主要是获取待转换的数据及schema数据,输出数据的schema;输出转换后的数据。
[0127]
综上所述,借助于本发明的上述技术方案,更加高效、便捷、灵活地对流式数据清洗、转换,筛选符合条件的数据,让数据对用户更加有价值。
[0128]
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
[0129]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献