System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种自动将存储过程转换为Spark SQL的方法技术_技高网

一种自动将存储过程转换为Spark SQL的方法技术

技术编号:41327010 阅读:3 留言:0更新日期:2024-05-13 15:04
本发明专利技术公开了一种自动将存储过程转换为Spark SQL的方法,包括以下步骤:S1):定义语法文件;S2):生成解析器代码;S3):编写应用程序:根据输入的储存过程,集成使用步骤2生成的解析器程序,生成一颗由多个语句组成的抽象语法树;S4):选取语法子树;S5):生成Spark SQL语句片段:使用深度优先算法遍历所有节点;S6):将语句片段连接起来形成一条完整的Spark SQL执行语句并连接Spark运行;S7):判断是否为最后一条语句:如果不是最后一条语句重复循环步骤4;如果是最后一条语句则结束。本发明专利技术自动将储存过程转化为Spark SQL,大大提高了转换效率,减少了手动重写的工作量和时间消耗。

【技术实现步骤摘要】

本专利技术属于大数据处理,特别是涉及一种自动将存储过程转换为sparksql的方法。


技术介绍

1、大部分企业都有对数据进行加工计算得到报表数据的需求,比如金融信贷行业,需要实时计算过去一段时间内的贷款的逾期率等资产质量指标报表,而随着业务的发展,积累的数据量会越来越大以及需要回溯的时间越来越长,导致一些报表任务执行的时间越来越长。为了解决这个问题很多企业引入大数据技术比如spark,但是原先在传统的关系数据库中开发了大量的存储过程,这些存储过程需要转换为spark sql以便在spark环境中运行。手动转换存储过程既费时又容易出错,因此需要一种自动化的方法来完成这项工作。


技术实现思路

1、本专利技术主要解决的技术问题是目前方案没有对需要线上调试的数据源做统一的管理,同时调试数据源与生产实时决策流进件业务耦合在一起,容易造成数据费用超支,且配置缺乏灵活性,调试的数据源上下线操作复杂。

2、为解决上述技术问题,本专利技术采用的一个技术方案是:

3、一种自动将存储过程转换为spark sql的方法,包括以下步骤:

4、s1):定义语法文件:编写一个bnf语法文件,用于定义储存过程的语法结构和语法规则;

5、s2):生成解析器代码:根据步骤1编写的bnf语法文件使用语法解析器生成工具生成解析器代码;

6、s3):编写应用程序:根据输入的储存过程,集成使用步骤2生成的解析器程序,生成一颗由多个语句组成的抽象语法树;

7、s4):选取语法子树:根据步骤3中生成的语法树,从左到右依次取一棵抽象语法子树;

8、s5):生成spark sql语句片段:使用深度优先算法遍历所有节点,根据节点类型和上下文生成spark sql语句片段;

9、s6):将语句片段连接起来形成一条完整的spark sql执行语句并连接spark运行;

10、s7):判断是否为最后一条语句:

11、如果不是最后一条语句重复循环步骤4;

12、如果是最后一条语句则结束。

13、进一步的,所述s1步骤中具体的定义步骤如下:

14、s1-1):定义sql关键字;

15、s1-2):定义储存的输入参数、方法名、变量定义;

16、s1-3):定义储存过程的主体和储存过程的返回值。

17、进一步的,所述s1-1步骤中关键字为create、update、insert、table、from、where。

18、进一步的,所述s1-3步骤中储存过程的主体包括执行逻辑和控制流语句,其中执行逻辑为一系列的通过分号分隔组成sql语句,控制流程语句为if、else、while。

19、进一步的,所述s2步骤中语法解析器生成工具包括anltr4、yacc、bison。

20、进一步的,所述s5步骤中会涉及到储存过程的语义转化和储存过程的变量绑定替换,具体储存过程的变量绑定替换包括以下步骤:

21、s5-1):查询信息;

22、s5-2):更新信息;

23、s5-2):查询更新后的信息。

24、进一步的,所述储存过程的变量包括自己定义声明的和方法参数传进来的。

25、进一步的,所述步骤5中的遍历使用函数递归。

26、进一步的,所述s6步骤具体分为以下步骤:

27、s6-1):读取储存过程的代码;

28、s6-2):解析成一个个词汇;

29、s6-3):将词汇根据定义的语法文件打上标签;

30、s6-4):根据标签和上下文组合成一个短语;

31、s6-5):根据短语组合成一个sql语句。

32、本专利技术的有益效果:

33、1.提高效率:自动将储存过程转化为spark sql,大大提高了转换效率,减少了手动重写的工作量和时间消耗。

34、2.提高灵活性:用户无需学习新的编程语言,即可在spark中执行储存过程逻辑,提高了工作的灵活性和可操作性。

35、3.准确执行:通过准确解析和控制流处理,转化后的spark sql能够准确地反映原始储存过程的逻辑,确保了逻辑的正确执行。

36、4.兼容性:语法解析器具备一定的灵活性和可扩展性,能够适应不同厂商(oracle,mysql,sql server等)的数据库储存过程语法,提供一致性和可移植性的解决方案,减少了储存过程转换的复杂性和工作量。

本文档来自技高网...

【技术保护点】

1.一种自动将存储过程转换为Spark SQL的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的一种自动将存储过程转换为Spark SQL的方法,其特征在于:所述S1步骤中具体的定义步骤如下:

3.根据权利要求2所述的一种自动将存储过程转换为Spark SQL的方法,其特征在于:所述S1-1步骤中关键字为CREATE、UPDATE、INSERT、TABLE、FROM、WHERE。

4.根据权利要求2所述的一种自动将存储过程转换为Spark SQL的方法,其特征在于:所述S1-3步骤中储存过程的主体包括执行逻辑和控制流语句,其中执行逻辑为一系列的通过分号分隔组成SQL语句,控制流程语句为IF、ELSE、WHILE。

5.根据权利要求1所述的一种自动将存储过程转换为Spark SQL的方法,其特征在于:所述S2步骤中语法解析器生成工具包括ANLTR4、YACC、BISON。

6.根据权利要求1所述的一种自动将存储过程转换为Spark SQL的方法,其特征在于:所述S5步骤中会涉及到储存过程的语义转化和储存过程的变量绑定替换,具体储存过程的变量绑定替换包括以下步骤:

7.根据权利要求6所述的一种自动将存储过程转换为Spark SQL的方法,其特征在于:所述储存过程的变量包括自己定义声明的和方法参数传进来的。

8.根据权利要求1所述的一种自动将存储过程转换为Spark SQL的方法,其特征在于:所述步骤5中的遍历使用函数递归。

9.根据权利要求1所述的一种自动将存储过程转换为Spark SQL的方法,其特征在于:所述S6步骤具体分为以下步骤:

...

【技术特征摘要】

1.一种自动将存储过程转换为spark sql的方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的一种自动将存储过程转换为spark sql的方法,其特征在于:所述s1步骤中具体的定义步骤如下:

3.根据权利要求2所述的一种自动将存储过程转换为spark sql的方法,其特征在于:所述s1-1步骤中关键字为create、update、insert、table、from、where。

4.根据权利要求2所述的一种自动将存储过程转换为spark sql的方法,其特征在于:所述s1-3步骤中储存过程的主体包括执行逻辑和控制流语句,其中执行逻辑为一系列的通过分号分隔组成sql语句,控制流程语句为if、else、while。

5.根据权利要求1所述的一种自动将存储过程转换为sp...

【专利技术属性】
技术研发人员:陈雪浩何彬吴志陶李瑞杰傅文斌
申请(专利权)人:苏银凯基消费金融有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1