问题标签 [py4j]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 来自 Java Runnable 的 Py4J 回调
我目前正在尝试使用 Py4J 执行以下操作:
- 在 Python 中定义一个调用 JVM 方法的方法(“执行程序”)
- 定义实现 JVM 接口的 Python(“回调”)对象
- 给定这个回调对象构造一个 JVM 对象
- 在此对象上调用一个方法,该方法将在 Java 中生成一个新线程,在回调对象上调用回调,这将(在 Python 端)执行“执行程序”方法
这是我在 Java 方面的内容:
在 Python 方面,我有以下脚本:
这是尝试执行此脚本时发生的情况。首先,使用gateway = ClientServer(java_parameters=JavaParameters(), python_parameters=PythonParameters())
,两个测试都失败了:
但是,如果我注释掉该self.execfunc()
行,测试 1 确实可以正常工作而不会引发错误。然而,测试 2 仍然失败:
现在切换到gateway = JavaGateway(callback_server_parameters=CallbackServerParameters())
. 当我一直self.execfunc()
注释掉时,测试 2 在这里仍然失败:
但至少测试 1 确实适用于self.execfunc()
启用。
我的问题是:如何在self.execfunc()
调用中使用线程方法?Py4J 有可能吗?
编辑:为了让事情变得更加棘手,调用的 Java 命令self.execfunc()
应该在调用.notify()
.
java - 如何从 Linux shell 启动 py4j GatewayServer?
我想在我的 Linux 主机上运行 py4j。
我的 Java 肌肉很弱,但我知道 Python。
我首先安装了 Anaconda 5.0.1,它给了我 Python 3.6.3
接下来,我使用 shell 命令安装了 py4j 包:
然后我安装了Java sdk并放在这里:
我设置了环境变量:
我使用这个 shell 命令来查看它:
它说:
接下来我研究了这个页面:
https://www.py4j.org/index.html
它要求我启动一个依赖于这个 Java 文件的服务器:
问题:在 Linux 上,我应该运行哪些 shell 命令来启动上述 Java 文件中列出的服务器?
python - py4j.Py4JException:方法拆分([])不存在
执行 spark 作业时出现以下错误:
这是我的代码:
最后一行抛出上面提供的异常。我该如何解决这个错误?此代码在 Spark 1.6 中运行良好。现在我正在使用 Spark 2.2,我收到了这个错误。Python 的版本是 2.7.12(和之前一样)。
java - Apache Tomcat | py4j | java.lang.IllegalArgumentException:在方法名称中发现无效字符。HTTP 方法名称必须是标记
我正在使用 py4j 从我的 python 代码中调用 Java 方法。当我在 eclipse 上启动 java 网关并使用 python 代码调用 java 方法时,我得到了正确的响应。但是,当我在 tomcat 上部署与 war 文件相同的 java 程序,然后使用 python 代码调用部署在 tomcat 上的 java 方法时,出现以下错误。
Java代码:
蟒蛇代码:
Tomcat 上的错误:
Python 上的错误:
我通过查看 py4j 模块代码检查了这个答案变量。在 jvm run 的情况下,它返回: yshi ,因为 hi 是输出,ys 被 py4j 使用。但如果是 tomcat 答案 = 'HTTP/1.1'。我不明白为什么会这样。请指导我。
java - 如何处理“py4j.Py4JException:此网关的目标对象 ID 不存在”?
我正在运行一个 python 服务,它调用一个 jar 文件来计算一些东西,然后对数据做进一步的处理。整个系统工作正常,除了偶尔我每次调用 java 函数时它开始抛出这个错误。
当我重新启动python服务时,它开始正常工作。这是一个罕见的事件,所以我还不能尝试重新启动 JVM,但这绝对是我想尝试的下一件事。但在那之前,是否有人对此有任何建议?
在启动 python 服务之前,我将 JVM 作为一个单独的进程运行。
python-3.x - 运行jupyter笔记本服务器时如何在启动时设置pythonpath
我正在运行本教程中的 Jupyter 笔记本公共服务器:http: //jupyter-notebook.readthedocs.io/en/stable/public_server.html
我想在这台服务器上使用 pyspark-2.2.1。我 pip 安装了 py4j 并从存储库下载了 spark-2.2.1。
在本地,我在 .bashrc 中添加了命令行
当我在本地运行 python 时一切正常。
但是,在使用 notebook 服务器时,我无法导入 pyspark,因为上述命令在 jupyter notebook 启动时并没有执行。
我通过键入部分(而不是优雅地)解决了这个问题
在我笔记本的第一个单元格中。但
返回错误
知道如何设置正确的路径(手动或在启动时)?
谢谢
python - 如何在 python 中使用带有 mainClass 的可执行 jar 文件?
我有一个mainClass
名为的可执行 jar 文件javaGateway
,它位于一个名为 的子包存储库中,gateway_server
我想在名为 的包根文件夹中运行该文件,gateway_code
它是gateway_server
. 我试图运行它,但是当我在 shell 上运行它时,我的脚本被阻塞了,然后它就可以工作了。为了通过 python 找到我的包,我在 python env 变量中进行了设置。
With:
java -cp iotcalcul.jar fr.iot.calcul.javaGateway
可以在 shell 中使用,但是通过在 python 脚本中调用它,就会出现问题。
pyspark - 'JavaPackage' 对象不可调用 pyspark 2.3.0 Anaconda Win10
我从 pySpark 开始。我已经在Win10的anadonda中安装了它。我复制了一个示例,当我执行代码时,出现此错误:
我已经读过它,但我找不到任何东西来解决这个错误。请帮我!
apache-spark - Pyspark Jupyter - 在 java 代码与 python 代码中创建的数据框
我在 java 中有一个类,可以构建一些复杂的 Spark DataFrame。
我将这个类添加到 pyspark/jupiter 类路径中,以便它可以被 py4j 调用。现在当我调用它时,我会得到奇怪的类型:
VS
有没有办法将此 JavaObject 转换为正确的 pyspark 数据帧?我遇到的一个问题是,当我想在 java 中构建的 DataFrame 上调用 df.show() 时,它会打印在 spark 日志中,而不是在笔记本单元格中。
python - PySpark NoSuchMethodError:将数据插入数据库时的 sun.nio.ch.DirectBuffer.cleaner
我在尝试将大型数据帧插入 Postgres 时收到此错误。NoSuchMethodError: sun.nio.ch.DirectBuffer.cleaner
这是一个完整的错误。之前有很多操作,所以没有理由将它们附加到问题中。
请你给一些建议,什么可以解决问题。或者在哪里寻找答案更好。