CN112287012B - 采用Spark SQL模式实现http接口调用方法 - Google Patents
采用Spark SQL模式实现http接口调用方法 Download PDFInfo
- Publication number
- CN112287012B CN112287012B CN202011353571.5A CN202011353571A CN112287012B CN 112287012 B CN112287012 B CN 112287012B CN 202011353571 A CN202011353571 A CN 202011353571A CN 112287012 B CN112287012 B CN 112287012B
- Authority
- CN
- China
- Prior art keywords
- interface
- transfer protocol
- hypertext transfer
- type
- class
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种采用Spark SQL模式实现http接口调用方法。属于Spark SQL模式实现http接口调用技术领域,提供一种在数据建模实施过程中与超文本传输协议http接口提供的数据源进行交互时维护和管理工作简单。将超文本传输协议调用封装成标准的接口;建模人员在数据库语言的表达式中引用接口,同时分别设置接口的请求头、请求地址和请求参数;将每个请求的返回结果转化成数据集,用于支持建模人员后续使用数据库语言进行分析;在执行查询数据库语言的计算指数函数时,先对数据库语言进行语法解析,生成语法树,其中子例程函数被解析成这棵树的一个节点,此时该节点还处于未解析的执行计划阶段。
Description
技术领域
本发明涉及Spark SQL模式实现http接口调用技术领域,具体涉及一种采用SparkSQL 模式实现http接口调用方法。
背景技术
在数据建模实施过程中需要与超文本传输协议http接口提供的数据源进行交互,为了实现业务模型,只能通过程序来实现,程序获取到数据后并将数据写入数据库,然后再通过据库语言SQL实现数据建模。这种模式对建模实施人员要求比较高,既要会写据库语言SQL,同时还需要会开发程序,或同时需要会写SQL和会写程序的工程师一起参与数据模型实施。
随着业务的发展,不同类型任务越来越多,相互之间存在不同的依赖,无论是新需求的增加还是修改,导致建模任务的维护和管理工作越来越复杂。
发明内容
本发明是为了解决在数据建模实施过程中与超文本传输协议http接口提供的数据源进行交互时维护和管理工作复杂的不足,提供一种在数据建模实施过程中与超文本传输协议 http接口提供的数据源进行交互时维护和管理工作简单,可靠性好的采用SparkSQL模式实现http接口调用方法。
为实现以上目的,本发明通过以下技术方案予以实现:
采用Spark SQL模式实现http接口调用方法,所述方法实现过程如下:
(1)将超文本传输协议调用封装成标准的接口;
(2)建模人员在数据库语言的表达式中引用接口,同时分别设置接口的请求头、请求地址和请求参数;
(3)将每个请求的返回结果转化成数据集,用于支持建模人员后续使用数据库语言进行分析;
(4)在执行查询数据库语言的计算指数函数时,先对数据库语言进行语法解析,生成语法树,其中子例程函数被解析成这棵树的一个节点,此时该节点还处于未解析的执行计划阶段;
(5)在节点匹配到关键词后的表名后,从内存或者外部的计算引擎数据源管理类中去查找该表是否存在;如果该表存在,则此时该表处于逻辑计划阶段;
(6)然后对计算引擎进行基于逻辑计划规则的优化;
(7)将原来的逻辑计划转化成优化后的逻辑计划;接下来通过物理规则对优化后的逻辑计划进行优化;通过物理规则对优化后的逻辑计划进行优化包括保证哈希分区的相同键值的所有行都在同一分区内,并将逻辑计划转换为物理计划;
(8)将语法树的节点处理成各个不同的类型;
(9)然后通过遍历语法树,对语法树的每个节点调用生成代码方法生成java字节码,生成的java字节码在java虚拟机上运行。
本方案在数据建模实施过程中与超文本传输协议http接口提供的数据源进行交互时维护和管理工作简单,可靠性好。
作为优选,在建模人员在数据库语言的表达式中引用接口时,还要为超文本传输协议接口创建超文本传输协议的实现类,此时超文本传输协议的函数将会有三个输入,这三个输入分别是请求地址、方法和参数。
作为优选,所述三个输入在继承三元表达式类后重新设为空安全值,超文本传输协议接口根据请求地址,方法和参数发起超文本传输协议接口请求,将返回内容经过计算引擎的内置行类处理;
然后继承时区表达式类,重新获取时区方法和默认获取到的当前时区;
然后再继承代码反馈式生成类,复用该类的代码生成方法;
重写表达式类型的返回类型方法,设置超文本传输协议接口调用返回结果的数据类型;
继承类型检查类,重写输入类型方法,定义各个输入参数类型;重写检查类型方法,判断输入类型,以及输出类型是否满足规定的类型;
重写表达式类型的调用名称,用户在据库语言中使用表达式对应的名称。
作为优选,在程序启动超文本传输协议接口时,使用超文本传输协议接口注册表类调用接口注册方法,将超文本传输协议的函数名称与实现类相绑定。
本发明能够达到如下效果:
本发明在数据建模实施过程中与超文本传输协议http接口提供的数据源进行交互时维护和管理工作简单,可靠性好。
附图说明
图1为本发明在执行查询数据库语言SQL的计算指数函数的流程示意图。
具体实施方式
下面结合附图与实施例对本发明作进一步的说明。
采用Spark SQL模式实现http接口调用方法,参见图1所示,所述方法实现过程如下:
(1)将超文本传输协议http调用封装成标准的http接口;
该http接口与计算引擎数据库语言Spark SQL模块中的求绝对值函数abs相类似。
(2)建模人员在数据库语言SQL的表达式中引用http接口,同时分别设置http接口的请求头Header、请求地址URL和请求参数params;
(3)将每个请求的返回结果转化成数据集Spark Dataframe,用于支持建模人员后续使用数据库语言SQL进行分析;
(4)在执行查询数据库语言SQL的计算指数函数select func(a)from t1时,先对数据库语言SQL进行语法解析,生成语法树AST tree,其中子例程函数func(a)和t1被解析成这棵树的一个节点TreeNode,此时该节点TreeNode还处于未解析的执行计划阶段Unresolved Logical Plan;
(5)在节点TreeNode匹配到关键词from后的表名后,从内存或者外部的计算引擎spark 数据源管理类Catalog中去查找该表是否存在;如果该表存在,则此时该表处于逻辑计划 Logical Plan阶段;
(6)然后对计算引擎spark进行基于逻辑计划规则的优化;
所述逻辑计划规则的优化包括:谓词下推和列裁剪;
(7)将原来的逻辑计划Logical Plan转化成优化后的逻辑计划OptimizedLogical Plan;接下来通过物理规则对优化后的逻辑计划进行优化;通过物理规则对优化后的逻辑计划进行优化包括保证哈希分区的相同键值的所有行都在同一分区内,并将逻辑计划转换为物理计划 Physical Plans;
(8)将语法树的节点TreeNode处理成各个不同的类型;
比如func(a)节点被处理成一个表达式类型Expression;
(9)然后通过遍历语法树,对语法树的每个节点调用生成代码方法doGenCode生成java 字节码,生成的java字节码在java虚拟机上运行。
在建模人员在数据库语言SQL的表达式中引用http接口时,还要为超文本传输协议http 接口创建超文本传输协议http的实现类,此时超文本传输协议http的函数将会有三个输入,这三个输入分别是请求地址、方法和参数。
所述三个输入在继承三元表达式类TernaryExpression后重新设为空安全值nullSafeEval,超文本传输协议http接口根据请求地址,方法和参数发起超文本传输协议http接口请求,将返回内容经过计算引擎spark的内置行类处理GenericInternalRow;
然后继承时区表达式类TimeZoneAwareExpression,重新获取时区方法withTimeZone和默认获取到的当前时区;
然后再继承代码反馈式生成类CodgenFallback,复用该类的代码生成方法doGenCode;
使得超文本传输协议http调用在物理计划的时候实现,不需要进行代码生成,避免重复调用执行字节码会被分发到不同执行节点上;
重写表达式类型Expression的返回类型方法datatype,设置超文本传输协议http接口调用返回结果的数据类型;
继承类型检查类ExpectsInputTypes,重写输入类型方法inputTypes,定义各个输入参数类型String,String,Struct;重写检查类型方法checkInputDataTypes,判断输入类型,以及输出类型是否满足规定的类型;
重写表达式类型Expression的调用名称prettyName,用户在据库语言SQL中使用表达式对应的名称。
在程序启动超文本传输协议http接口时,使用超文本传输协议http接口注册表类SimpleFunctionRegistry调用接口注册方法registerFunction,将超文本传输协议http的函数名称与实现类相绑定。
本实施例直接通过SQL表达式实现接口调用,学习和使用成本很低;不需要开发应用程序代码实现与接口数据的交互,降低实施和维护成本;实现异构数据源处理,支持超文本传输协议http接口返回的数据与其他数据源(数据库,消息队列,文件系统)进行联机分析处理;将超文本传输协议http接口返回的数据,在不需要额外开发的情况下,能够直接写到不同的数据源。使得在数据建模实施过程中与超文本传输协议http接口提供的数据源进行交互时维护和管理工作简单,可靠性好。
Claims (4)
1.采用Spark SQL模式实现http接口调用方法,其特征在于,所述方法实现过程如下:
(1)将超文本传输协议调用封装成标准的接口;
(2)建模人员在数据库语言的表达式中引用接口,同时分别设置接口的请求头、请求地址和请求参数;
(3)将每个请求的返回结果转化成数据集,用于支持建模人员后续使用数据库语言进行分析;
(4)在执行查询数据库语言的计算指数函数时,先对数据库语言进行语法解析,生成语法树,其中子例程函数被解析成这棵树的一个节点,此时该节点还处于未解析的执行计划阶段;
(5)在节点匹配到关键词后的表名后,从内存或者外部的计算引擎数据源管理类中去查找该表是否存在;如果该表存在,则此时该表处于逻辑计划阶段;
(6)然后对计算引擎进行基于逻辑计划规则的优化;
(7)将原来的逻辑计划转化成优化后的逻辑计划;接下来通过物理规则对优化后的逻辑计划进行优化;通过物理规则对优化后的逻辑计划进行优化包括保证哈希分区的相同键值的所有行都在同一分区内,并将逻辑计划转换为物理计划;
(8)将语法树的节点处理成各个不同的类型;
(9)然后通过遍历语法树,对语法树的每个节点调用生成代码方法生成java字节码,生成的java字节码在java虚拟机上运行。
2.根据权利要求1所述的采用Spark SQL模式实现http接口调用方法,其特征在于,在建模人员在数据库语言的表达式中引用接口时,还要为超文本传输协议接口创建超文本传输协议的实现类,此时超文本传输协议的函数将会有三个输入,这三个输入分别是请求地址、方法和参数。
3.根据权利要求2所述的采用Spark SQL模式实现http接口调用方法,其特征在于,所述三个输入在继承三元表达式类后重新设为空安全值,超文本传输协议接口根据请求地址,方法和参数发起超文本传输协议接口请求,将返回内容经过计算引擎的内置行类处理;
然后继承时区表达式类,重新获取时区方法和默认获取到的当前时区;
然后再继承代码反馈式生成类,复用该类的代码生成方法;
重写表达式类型的返回类型方法,设置超文本传输协议接口调用返回结果的数据类型;
继承类型检查类,重写输入类型方法,定义各个输入参数类型;重写检查类型方法,判断输入类型,以及输出类型是否满足规定的类型;
重写表达式类型的调用名称,用户在据库语言中使用表达式对应的名称。
4.根据权利要求3所述的采用Spark SQL模式实现http接口调用方法,其特征在于,在程序启动超文本传输协议接口时,使用超文本传输协议接口注册表类调用接口注册方法,将超文本传输协议的函数名称与实现类相绑定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011353571.5A CN112287012B (zh) | 2020-11-26 | 2020-11-26 | 采用Spark SQL模式实现http接口调用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011353571.5A CN112287012B (zh) | 2020-11-26 | 2020-11-26 | 采用Spark SQL模式实现http接口调用方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112287012A CN112287012A (zh) | 2021-01-29 |
CN112287012B true CN112287012B (zh) | 2022-05-03 |
Family
ID=74425744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011353571.5A Active CN112287012B (zh) | 2020-11-26 | 2020-11-26 | 采用Spark SQL模式实现http接口调用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112287012B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
CN106970819A (zh) * | 2017-03-28 | 2017-07-21 | 清华大学 | 一种基于prdl规则描述语言的c程序代码规范检查装置 |
CN108255837A (zh) * | 2016-12-28 | 2018-07-06 | 中国移动通信集团浙江有限公司 | 一种sql解析器及方法 |
CN108733727A (zh) * | 2017-04-25 | 2018-11-02 | 华为技术有限公司 | 一种查询处理方法、数据源注册方法及查询引擎 |
CN110059103A (zh) * | 2019-04-28 | 2019-07-26 | 南京大学 | 一种跨平台统一的大数据sql查询方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844608B2 (en) * | 2006-12-15 | 2010-11-30 | Yahoo! Inc. | Clustered query support for a database query engine |
-
2020
- 2020-11-26 CN CN202011353571.5A patent/CN112287012B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
CN108255837A (zh) * | 2016-12-28 | 2018-07-06 | 中国移动通信集团浙江有限公司 | 一种sql解析器及方法 |
CN106970819A (zh) * | 2017-03-28 | 2017-07-21 | 清华大学 | 一种基于prdl规则描述语言的c程序代码规范检查装置 |
CN108733727A (zh) * | 2017-04-25 | 2018-11-02 | 华为技术有限公司 | 一种查询处理方法、数据源注册方法及查询引擎 |
CN110059103A (zh) * | 2019-04-28 | 2019-07-26 | 南京大学 | 一种跨平台统一的大数据sql查询方法 |
Non-Patent Citations (2)
Title |
---|
Using positive tainting and syntax-aware evaluation to counter SQL injection attacks;William G.J. Halfond等;《SIGSOFT "06/FSE-14: Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering》;20061105;第175-185页 * |
基于Spark SQL的分布式全文检索框架的设计与实现;崔光范等;《计算机科学》;20180915;第104-112、145页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112287012A (zh) | 2021-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5431513B2 (ja) | コマンド索引のためのローカル記憶装置および拡張記憶装置を使用したコマンドスクリプトの解釈 | |
US9058360B2 (en) | Extensible language framework using data cartridges | |
EP2616965B1 (en) | Support for a parameterized query/view in complex event processing | |
US20160335057A1 (en) | Parsing and compiling data system queries | |
US10310828B2 (en) | System and method for providing and executing a domain-specific language for cloud services infrastructure | |
US20100175049A1 (en) | Scope: a structured computations optimized for parallel execution script language | |
US20070089117A1 (en) | Implementation system for business applications | |
US20090113387A1 (en) | Methods and systems for dynamically generating and optimizing code for business rules | |
US20090089039A1 (en) | System and method of emulating functionality of a web service | |
US8788929B2 (en) | Script generation | |
CN112860730A (zh) | Sql语句的处理方法、装置、电子设备及可读存储介质 | |
CN110673839A (zh) | 分布式工具配置化构建生成方法及系统 | |
CN112363695A (zh) | Pmml文件及其运行时环境与工业软件的集成方法 | |
CN111694846A (zh) | 一种基于Type 2 JDBC驱动的分离模式分布式存储过程实现方法 | |
CN111221888A (zh) | 大数据分析系统及方法 | |
CN112287012B (zh) | 采用Spark SQL模式实现http接口调用方法 | |
US7831958B2 (en) | Systems and methods for distributing updated information | |
CN110611694B (zh) | 一种基于虚拟化主从容器的数据处理中心 | |
Frey et al. | MAMBA: A measurement architecture for model-based analysis | |
US20140372488A1 (en) | Generating database processes from process models | |
CN116483479A (zh) | 多维度调用接口的方法和装置、设备、介质 | |
US9172595B2 (en) | Systems and methods of packet object database management | |
CN114385145A (zh) | 一种Web系统后端架构设计方法及计算机设备 | |
KR20200124551A (ko) | 배치 업무의 대용량 데이터를 처리하기 위한 변환시스템 | |
US10108743B2 (en) | Methods and systems for simplifying object mapping for user interfaces |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |