Spark Scala/Java调用Python算法文件
1.Windows本地调用
1.1python算法库环境安装
python算法中会调用许多额外的其它第三方库,使用pip install xxx安装时会经常因为一些原因(如网络延迟)导致安装失败,这时候可以安装Anaconda3来解决这个问题(Anaconda里面包含了大多数python用到的算法库如numpy、pandas等),下载地址https://www.anaconda.com/products/individual#linux。
安装完成后,配置环境变量,一共有两个,添加到PATH里面,一个是python地址(E:\software\Anaconda3),一个是python算法库路径(E:\software\Anaconda3\Scripts),配置完成后重启电脑生效,可以用简单python算法文件验证一下;
1.2调用代码编写
接着在IDEA的plugins中添加python的插件,编写Scala或Java程序就可以调用了,调用代码如下:
package com.hy.model.actionimport com.hy.model.util.StringUtils
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.spark.deploy.PythonRunner
import org.apache.spark.sql.SparkSessionobject PythonApplication {def main(args: Array[String]) {/* val modelPath = args(0)val pyFiles = args(1)*/val modelPath = "F:\\projectCode\\spark-model\\src\\main\\resources\\Health_singlePV_v1.3.py"val pyFiles = "Health_singlePV_v1.3.py"val ss = SparkSession.builder().config("spark.executorEnv.PYSPARK_PYTHON","python3").config("spark.yarn.appMasterEnv.PYSPARK_PYTHON","python3").appName("RunPythonExample").master("local[2]").getOrCreate()/*** 因为spark 仅仅支持本地支持python文件,所以在每次运行python文件时,需要将hdfs中的python文件先拉到本地临时目录下,等任务结束后删除该文件*/val context = ss.sparkContext//val fileSystem = FileSystem.get(context.hadoopConfiguration)val modelFSpath = new Path(modelPath)val local = "/tmp" + modelPathprintln("local: " + local)val localPath = new Path(local)// fileSystem.copyToLocalFile(false, modelFSpath, localPath, true)runPython(modelPath, pyFiles)ss.stop()}def runPython(pyFilePath: String, pyFiles: String): Unit = {val inputPath = "-i /input"val outputPath = "-o /output"PythonRunner.main(Array(pyFilePath, pyFiles, inputPath, outputPath))}}
2.Linux服务器调用
根据上面Anaconda网址下载linux版本的安装包(是一个大的.sh文件),使用命令bash Anaconda.xxx.sh命令安装,根据提示输入安装指令,最后将python地址添加到环境变量里面,如下:
PATH=$PATH:$HOME/bin:/opt/soft/anaconda3/bin
然后将上面的spark程序打成jar包,执行spark程序即可调用。
Spark Scala/Java调用Python算法文件相关推荐
- java调用python算法
做项目的时候,尤其是java开发时,经常会遇到调用python算法的情况,本人最近在项目中遇到这样一个问题:网页前端设计了一个与用户聊天的对话窗口(类似qq聊天),主要目的是为用户解答一些常见的问题. ...
- 在Spark Scala/Java应用中调用Python脚本,会么?
摘要:本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同. 本文分享自华为云社区<[Spark]如何在Spark Scala/ ...
- 教你如何在Spark Scala/Java应用中调用Python脚本
摘要:本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同. 本文分享自华为云社区<[Spark]如何在Spark Scala/ ...
- python文件转换成jar包_Python一键转Jar包,Java调用Python新姿势!
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 今天的这篇文章,聊一个轩辕君之前工作中遇到的需求:如何在Jav ...
- java调用python文件的几种方式【超细讲解!】
java调用python的契机来自于一个项目需要用到算法,但是算法工程师们写的python,于是就有了java后端调用python脚本的需求,中间遇到了许多问题,特此记录整理了一次. 1.java调用 ...
- 如何在Java程序中调用Python算法脚本,重点讲Demo,不墨迹理论
原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重. 前言 通过本篇,你将初步认识在Java程序中简单调用.py脚本文件的方法,附带入门的Demo实例讲解,更深入的理解还需要进一步学习. 最近 ...
- .net core 引用jar_Python一键转Jar包,Java调用Python新姿势!
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 今天的这篇文章,聊一个轩辕君之前工作中遇到的需求:如何在Jav ...
- Java 调用 Python 方法学习笔记
文章转载自: 作者:IT_xiao_bai 来源:CSDN 原文:https://blog.csdn.n ...
- Java调用python脚本
Java调用python脚本 最近也是刚开始学python,所以这里写了一个简单的小方法用Java来调用python脚本.后期再进行更新. 1.Java启动程序的方法 在Java中提供了两种方法来启动 ...
最新文章
- 分库分表之 Sharding-JDBC 中间件,看这篇真的够了!
- mysql中in的用法总结_MySQL中的find_in_set()函数使用技巧心得与应用场景总结
- 关于jetty的那些奇葩问题
- S.O.L.I.D.类设计原则
- Window下mysql5.7及以上版本插入中文乱码问题
- mysql解锁_mysql 解锁
- 10-05 Java 内部类概述和讲解
- Struts2教程3:struts.xml常用配置解析
- 汇编语言典型例子详解_单片机汇编语言经典一百例
- 什么是CTI?呼叫中心系统CTI技术的应用
- 常见的list转化map 实现
- 20 个实例玩转 Java 8 Stream
- Pentaho安装与配置
- IP获取方法二:太平洋网络IP地址查询Web接口
- JAVA课程(零)——课前准备 环境的搭建
- 世界环境保护日的志愿者
- 微信第三方平台【六】微信开放平台帐号管理
- 曾被“霸凌”的两个孩子:电动汽车与分布式数据库
- SWUST OJ 616: 排序查找
- 关于一个ISE错误XST:899的错误判断的讨论