问题标签 [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.

0 投票
0 回答
270 浏览

java - 使用 Py4J 保存 java 对象的新值

我只是好奇 Py4j 中是否有任何函数可以在 Java 对象中保存新值。我的意思是,使用get_field函数我可以很容易地获取 java 对象的值,并且set_field我可以更改该值,但我想,只能在 Python 中。我看不到 Java 应用程序的任何变化。

例子:

0 投票
0 回答
2038 浏览

python-2.7 - py4j.protocol.Py4JNetworkError:尝试连接到 Java 服务器时出错

我试图理解这个使用 Py4j 的代码。然而,每次我运行代码时,我都会遇到同样的错误。我的 Ubuntu 14.04 中安装了 py4j。jar 文件位于 usr/share/py4j 中。

代码是

我得到的错误是

文件“/home/shiju/Downloads/Abstractive Summarizer/SumMe-master/Summarizer/preprocessor.py”,第 29 行,在detector.init(LangPaths)

__call_ answer = self.gateway_client.send_command(command) 中的文件“/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py”,第 811 行

文件“/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py”,第 624 行,在 send_command connection = self._get_connection()

文件“/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py”,第 579 行,在 _get_connection 连接 = self._create_connection() 文件“/usr/local/lib/python2.7/dist -packages/py4j/java_gateway.py”,第 585 行,在 _create_connection connection.start() 中

文件“/usr/local/lib/python2.7/dist-packages/py4j/java_gateway.py”,第 697 行,开始引发 Py4JNetworkError(msg, e) py4j.protocol.Py4JNetworkError:尝试连接时出错Java 服务器

我认为 Python 无法与 Java 应用程序连接

0 投票
0 回答
314 浏览

java - Spark 中自定义 Java 代码和 Python 代码之间的交互

我们有 Java 库用于在 Spark 环境中执行某些操作(主要是智能地查询后端)。我想使用它们的功能,但用 Python 开发。是否有这样做的标准方法(“这”可能意味着:在 Java 和 Python 之间传递 RDD 和活动的 SparkContext)?

我已经看到PySpark 使用Py4J来公开 SparkContext,所以我想我可以或多或少地从 Python 运行我想要的所有 Java 代码。然而,看看 Py4J 接口的 Python 包装器,似乎有很多地方出错了,而且一条更彻底的路径似乎更可取。

0 投票
4 回答
10650 浏览

java - 在 PySpark 中运行自定义 Java 类

我正在尝试在 PySpark 中运行自定义 HDFS 阅读器类。这个类是用 Java 编写的,我需要从 PySpark 访问它,无论是从 shell 还是使用 spark-submit。

在 PySpark 中,我从 SparkContext ( sc._gateway) 中检索 JavaGateway。

假设我有一堂课:

我试图将它打包到一个 jar 中并通过--jar选项传递给 pyspark 然后运行:

但我得到了错误:

有人可以帮忙吗?谢谢。

0 投票
1 回答
1145 浏览

java - 如何从 python 程序运行 java 程序(.java 代码文件)?

我基本上想编写一个python代码,从那里我将输入字符串发送到java程序,我希望java程序执行它并将结果返回给python文件。可能吗?

0 投票
1 回答
576 浏览

java - 在服务器中运行应用程序时的 Py4j 异常

我使用 py4j 创建了一个应用程序,它可以使用 java 应用程序将 python 中的数据保存到 SQL 数据库中,当我将 JVM 作为应用程序运行时,一切正常,它实际上保存了数据。但是当我在服务器上运行代码时,它给了我一个异常。Therfore 我想也许我的服务器(Wildfly)和 Py4j 使用相同的端口,所以我按照教程的建议更改了默认的 py4j 端口,这就是 python 方面的方式修改后的样子:

但我仍然有一个例外:

任何建议将不胜感激。

0 投票
0 回答
1684 浏览

python-2.7 - 火花流。Py4j 的问题:获取新的通信通道时出错

我目前在 Spark 1.3 和 Python 2.7 上具有 50 个节点的集群上运行实时 Spark Streaming 作业。Spark 流上下文从 HDFS 中的目录读取,批处理间隔为 180 秒。以下是 Spark 作业的配置:

spark-submit --master yarn-client --executor-cores 5 --num-executors 10 --driver-memory 10g --conf spark.yarn.executor.memoryOverhead=2048 --conf spark.yarn.driver.memoryOverhead= 2048 --conf spark.network.timeout=300 --executor-memory 10g

这项工作在大多数情况下运行良好。但是,它在大约 15 小时后抛出 Py4j 异常,理由是它无法获得通信通道

我尝试减小 Batch Interval 大小,但随后会产生处理时间大于 Batch Interval 的问题。

下面是错误的截图

Py4j错误

我做了一些研究,发现这可能是来自此处SPARK-12617的 Socket 描述符泄漏的问题

但是,我无法解决该错误并解决它。有没有办法手动关闭可能阻止提供端口的打开连接。或者我是否必须对代码进行任何特定更改才能解决此问题。

TIA

0 投票
0 回答
111 浏览

java - 需要 Py4j 事件监听器

当音量约为每小时 200k 条消息并且 jython 不是一个选项时,我发现 stomp.py 落后了,因此使用 java 消息侦听器我希望有一个 python 脚本“订阅”消息/事件从此 java 应用程序生成。我有基本的网关工作并且可以调用“getMessage()”,如下所示:

...

java方法在哪里:

我真正需要的是“订阅”getMsg() 方法并将这些消息作为事件“推送”。上述的低租金替代方案是:

我看到一些 callback_server 详细信息,其中需要 java 端的接口 - 我在 java 端设置了它,并且我可以在 python 端尽可能多地遵循,但显然我错过了好东西&它没有做太多:

****爪哇***

****Python***

提前致谢!

0 投票
1 回答
7390 浏览

java - py4j.protocol.Py4JNetworkError : 尝试连接到 Java 服务器时出错

我有以下来自 py4j 文档的简单示例:

我试图运行它,但得到以下错误:


为了连接到 Java 服务器,我应该做些什么?谢谢!

0 投票
4 回答
8124 浏览

java - pyspark:从 pyspark 调用自定义 java 函数。我需要 Java_Gateway 吗?

我编写了以下 MyPythonGateway.java 以便可以从 Python 调用我的自定义 java 类:

这是我在 Python 代码中使用它的方式:


现在我想使用MyPythonGateway.findMyNum()PySpark 中的函数,而不仅仅是一个独立的 python 脚本。我做了以下事情:

但是,我收到以下错误:

那么我在这里错过了什么?我不知道在使用 pyspark 时是否应该运行 MyPythonGateway 的单独 JavaApplication 来启动网关服务器。请指教。谢谢!


下面正是我需要的:

解决这个问题的最佳方法是什么?谢谢!