跨平台移植Python程序的方法和装置制造方法及图纸

技术编号:15638813 阅读:314 留言:0更新日期:2017-06-15 19:35
本发明专利技术提出一种跨平台移植Python程序的方法和装置,该跨平台移植Python程序的方法包括接收用户编写的实现预设函数功能的Python程序;通过Python解析器将Python程序解析为Java类,并将Java类作为目标Java类;采用Spark框架下实现预设函数功能的Java类调用目标Java类,以实现将Python程序移植至Spark框架下。通过本发明专利技术能够在Spark框架下运行实现预设函数功能的Python程序,简化Spark框架下程序的设计。

【技术实现步骤摘要】
跨平台移植Python程序的方法和装置
本专利技术涉及软件开发
,尤其涉及一种跨平台移植Python程序的方法和装置。
技术介绍
随着软件开发技术的发展,项目开发人员开始引用Spark技术,SparkSQL是Spark技术的核心组件之一。由于SparkSQL本身支持的函数有限,因此推出了用户自定义函数UDF功能,用户可以在SparkSQL里自定义实际需要的UDF来处理数据。Python作为一种面向对象、直译式计算机程序设计语言,因其具有跨平台、公用库多、易开发等优势,应用趋势越来越高。相关技术中,SparkSQL中并未提供采用Python程序编写UDF的功能,只是提供转换关键字在SQL中调用脚本的功能,即将表中的数据作为Python的标准输入,而后捕捉标准输出。这种方式下,无法如采用Java程序编写应用程序编程接口,提供满足用户自定义表生成函数UDTF和用户自定义聚合函数UDAF的功能。
技术实现思路
本专利技术旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本专利技术的一个目的在于提出一种跨平台移植Python程序的方法,能够在Spark框架下运行实现预设函数功能的Python程序,简化Spark框架下程序的设计。本专利技术的另一个目的在于提出一种跨平台移植Python程序的装置。为达到上述目的,本专利技术第一方面实施例提出的跨平台移植Python程序的方法,包括:接收用户编写的实现预设函数功能的Python程序;通过Python解析器将所述Python程序解析为Java类,并将所述Java类作为目标Java类;采用Spark框架下实现预设函数功能的Java类调用所述目标Java类,以实现将所述Python程序移植至所述Spark框架下。在本专利技术的一个实施例中,在所述采用Spark框架下实现预设函数功能的Java类调用所述目标Java类中,包括:采用Java程序编写所述Spark框架下实现预设函数功能的Java类;采用Java反射机制调用所述目标Java类。在本专利技术的一个实施例中,在所述通过Python解析器将所述Python程序解析为Java类之前,还包括:采用Java程序编写所述Python解析器。在本专利技术的一个实施例中,在所述接收用户编写的实现预设函数功能的Python程序之前,包括:采用Python程序编写预设函数的基类,得到实现预设函数功能的Python基类。在本专利技术的一个实施例中,还包括:对所述Python基类、所述Java类、所述Python解析器,以及所述Python程序进行脚本化处理,得到jar包;在所述Spark框架下运行所述jar包,以实现将所述Python程序移植至所述Spark框架下。本专利技术第一方面实施例提出的方法,通过接收用户编写的实现预设函数功能的Python程序,通过Python解析器将Python程序解析为Java类,并将Java类作为目标Java类,最后采用Spark框架下实现预设函数功能的Java类调用目标Java类,以实现将Python程序移植至Spark框架下,能够在Spark框架下运行实现预设函数功能的Python程序,简化Spark框架下程序的设计。为达到上述目的,本专利技术第二方面实施例提出的跨平台移植Python程序的装置,包括:接收模块,用于接收用户编写的实现预设函数功能的Python程序;解析模块,用于通过Python解析器将所述Python程序解析为Java类,并将所述Java类作为目标Java类;调用模块,用于采用Spark框架下实现预设函数功能的Java类调用所述目标Java类,以实现将所述Python程序移植至所述Spark框架下。在本专利技术的一个实施例中,还包括:编写子模块,用于采用Java程序编写所述Spark框架下实现预设函数功能的Java类;调用子模块,用于采用Java反射机制调用所述目标Java类。在本专利技术的一个实施例中,还包括:第一编写模块,用于采用Java程序编写所述Python解析器。在本专利技术的一个实施例中,还包括:第二编写模块,用于采用Python程序编写预设函数的基类,得到实现预设函数功能的Python基类。在本专利技术的一个实施例中,还包括:处理模块,用于对所述Python基类、所述Java类、所述Python解析器,以及所述Python程序进行脚本化处理,得到jar包;运行模块,用于在所述Spark框架下运行所述jar包,以实现将所述Python程序移植至所述Spark框架下。本专利技术第二方面实施例提出的跨平台移植Python程序的装置,通过接收用户编写的实现预设函数功能的Python程序,通过Python解析器将Python程序解析为Java类,并将Java类作为目标Java类,最后采用Spark框架下实现预设函数功能的Java类调用目标Java类,以实现将Python程序移植至Spark框架下,能够在Spark框架下运行实现预设函数功能的Python程序,简化Spark框架下程序的设计。本专利技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。附图说明本专利技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:图1是本专利技术一实施例提出的跨平台移植Python程序的方法的流程示意图;图2是本专利技术另一实施例提出的跨平台移植Python程序的方法的流程示意图;图3是本专利技术另一实施例提出的跨平台移植Python程序的方法的流程示意图;图4是本专利技术一实施例提出的跨平台移植Python程序的装置的结构示意图;图5是本专利技术另一实施例提出的跨平台移植Python程序的装置的结构示意图。具体实施方式下面详细描述本专利技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本专利技术,而不能理解为对本专利技术的限制。相反,本专利技术的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。图1是本专利技术一实施例提出的跨平台移植Python程序的方法的流程示意图,本实施例以该跨平台移植Python程序的方法被配置为跨平台移植Python程序的装置中来举例说明。参见图1,该跨平台移植Python程序的方法包括:S11:接收用户编写的实现预设函数功能的Python程序。随着软件开发技术的发展,项目开发人员开始引用Spark技术,SparkSQL是Spark技术的核心组件之一。由于SparkSQL本身支持的函数有限,因此推出了用户自定义函数UDF功能,用户可以在SparkSQL里自定义实际需要的UDF来处理数据。Python作为一种面向对象、直译式计算机程序设计语言,因其具有跨平台、公用库多、易开发等优势,应用趋势越来越高。相关技术中,SparkSQL中并未提供采用Python程序编写UDF的功能,只是提供转换关键字在SQL中调用脚本的功能,即将表中的数据作为Python的标准输入,而后捕捉标准输出。这种方式下,无法如采用Java程序编写应用程序编程接口,提供满足用户自定义表生成函数UDTF和用户自定义聚合函数UDAF的功能。而本专利技术的实施例中,通过接收用户本文档来自技高网...
跨平台移植Python程序的方法和装置

【技术保护点】
一种跨平台移植Python程序的方法,其特征在于,包括以下步骤:接收用户编写的实现预设函数功能的Python程序;通过Python解析器将所述Python程序解析为Java类,并将所述Java类作为目标Java类;采用Spark框架下实现预设函数功能的Java类调用所述目标Java类,以实现将所述Python程序移植至所述Spark框架下。

【技术特征摘要】
1.一种跨平台移植Python程序的方法,其特征在于,包括以下步骤:接收用户编写的实现预设函数功能的Python程序;通过Python解析器将所述Python程序解析为Java类,并将所述Java类作为目标Java类;采用Spark框架下实现预设函数功能的Java类调用所述目标Java类,以实现将所述Python程序移植至所述Spark框架下。2.如权利要求1所述的跨平台移植Python程序的方法,其特征在于,在所述采用Spark框架下实现预设函数功能的Java类调用所述目标Java类中,包括:采用Java程序编写所述Spark框架下实现预设函数功能的Java类;采用Java反射机制调用所述目标Java类。3.如权利要求1所述的跨平台移植Python程序的方法,其特征在于,在所述通过Python解析器将所述Python程序解析为Java类之前,还包括:采用Java程序编写所述Python解析器。4.如权利要求1所述的跨平台移植Python程序的方法,其特征在于,在所述接收用户编写的实现预设函数功能的Python程序之前,包括:采用Python程序编写预设函数的基类,得到实现预设函数功能的Python基类。5.如权利要求1所述的跨平台移植Python程序的方法,其特征在于,还包括:对所述Python基类、所述Java类、所述Python解析器,以及所述Python程序进行脚本化处理,得到jar包;在所述Spark框架下运行所述jar包,以实现将所述Pytho...

【专利技术属性】
技术研发人员:黄宁
申请(专利权)人:杭州数梦工场科技有限公司
类型:发明
国别省市:浙江,33

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

1