Idea 同一工程下,Scala调用并运行Python程序并显示结果到控制台

最近在做的Spark Streaming项目中,需要引用python程序处理数据。
网上搜了很多资料最后得出解决办法。


1.新建一个python文件 test.py

文件路径:src/main/python/test.py
在这里插入图片描述

2.在Scala程序中添加一行代码

文件路径:src/main/scala

"python src/main/python/test.py args" !

Idea 同一工程下,Scala调用并运行Python程序并显示结果到控制台_第1张图片

注意此处需要在代码内添加引用包

在这里插入图片描述
Idea 同一工程下,Scala调用并运行Python程序并显示结果到控制台_第2张图片

3.运行Scala,得到结果

控制台可以输出python程序运行结果

Idea 同一工程下,Scala调用并运行Python程序并显示结果到控制台_第3张图片

还有一些其他的方法,如建立一个子进程执行python脚本,但这种方法我暂时没有找到使它在控制台输出结果的办法。
val proc = Runtime.getRuntime().exec("python E:/testScala/src/main/python/test.py")
proc.waifFor()
用Jython调用

Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。

此部分我学习了 https://blog.csdn.net/u012234115/article/details/78262359 这篇博客

你可能感兴趣的:(Idea 同一工程下,Scala调用并运行Python程序并显示结果到控制台)