问题标签 [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 投票
1 回答
1236 浏览

java - 使用 Eclipse 导入 py4j

我已经阅读了 py4j.org 介绍的第一部分,然后我跳到了 Eclipse 部分。我安装了在这里找到的 Eclipse 插件:http: //eclipse.py4j.org/然后重新启动了 Eclipse。

我在预先存在的 Java 项目中有一个名为 DateRange 的类,因此我按照说明创建了一个名为 DateRangeEntryPoint 的新类。这由以下代码组成。

}

但是,当我尝试在 Eclipse 中运行它时,出现以下错误:

我坚持的是如何在 Eclipse 中导入 py4j,以便我可以在 Python 中利用 Eclipse 项目中已经定义的对象。

0 投票
1 回答
213 浏览

java - 在 py4j 中使用整个 Eclipse 项目

我在一个 Eclipse 项目文件夹中有一堆 Java 代码,我希望能够在使用 py4j 的 python 开发中使用这些代码。

是否有任何规范的方法可以将 Java 项目连接到 python 3.0(anaconda)?到目前为止,我的理解是我必须为项目中的每个类创建一个入口点,然后创建一个

在 Java 项目的主要部分的某个地方。

0 投票
0 回答
1190 浏览

java - 在 Python 中接收 java 类对象

我有 Java .jar 文件,它定义了几个类,并且有一个 python 框架,它打算从中选择任何类,实例化它的对象并调用它的方法。为此,我使用 py4j JavaGateway()。

在蟒蛇方面:

在 Java 方面:

我尝试从 Java 返回实际的类对象(硬编码用于调试的一种情况),但它也没有在 Python 中得到识别。请建议这种在python中调用java jar方法的方法是否可行。

0 投票
1 回答
841 浏览

apache-spark - pyspark,你能以某种方式将 pyspark 的 SparkContext 传递给 java 对象吗

因此,根据众所周知的火花错误/设计限制https://issues.apache.org/jira/browse/SPARK-2243,您不能拥有多个 SparkContext。现在,我正在做 python 和 Scala 的这种非常丑陋的混合,我有一个 Scala 方法,它需要一个 SparkContext 作为参数。我能否以某种方式实例化这个 Scala 对象,py4j然后将其传递给 pyspark 的 SparkContext(sc在 pyspark shell 中导出)。我的理解是这sc是一个围绕 Scala 对象的薄包装器,但我不知道如何将其转换为 java/scala 类并将其作为参数传递给我的 Scala 方法。

0 投票
2 回答
4358 浏览

java - Java 数组到 NumPy 数组的快速转换 (Py4J)

有一些很好的例子如何将 NumPy 数组转换为 Java 数组,但反之亦然 - 如何将数据从 Java 对象转换回 NumPy 数组。我有一个这样的 Python 脚本:

my_numpy是 Numpy 数组,int_array是 Java 整数数组 -int[ ][ ]一种数组。在 Python 脚本中初始化为:

虽然它按原样工作,但它不是最快的方式,而且工作速度很慢 - 对于 ~1000x1000 阵列,转换需要 5 分钟以上。

有什么办法可以在合理的时间内做到这一点?

如果我尝试:

我得到:

0 投票
1 回答
2665 浏览

python - Spark Java 堆错误

我不确定这里发生了什么以及为什么。

我有一个数据框,它同时作为熊猫和火花数据框加载。

数据框是稀疏的,主要是零。它的尺寸是 56K X 9K。所以没那么大

我还将以下命令放入我的 spark/conf/spark-defaults.conf 文件中

因此,如果您看到,我已经为 Driver 分配了 8GB,为 executor 分配了 2G。我正在使用本地安装在我的 Macbook Pro 上的 Spark。

当我做

看到前 5 行,这就是我得到的:

该数据框是使用 Spark 数据框的交叉表创建的,如下所示:

当使用 .show() 时,recommender_sdf 上方的 spark 数据框可以正常工作。

相同的交叉表方法用于 pandas 数据框,当我在下面这样做时,它工作得很好。

这立即起作用。

这表明该文件很容易被加载到内存中并且可以被 pandas 使用,但是当使用 .show() 或 .head() 时,spark 中的相同数据帧会引发 java 堆错误。并且在抛出错误之前需要很多时间。

我不明白为什么会这样。当可以使用 pandas 轻松访问和打印相同的数据帧时,Spark 不应该比 pandas 更快并且不应该有这个内存问题。

编辑:

好的。当我从相应的 pandas 数据框中获取前几行和几列时,交叉选项卡的 spark 数据框看起来像这样

列名基本上是长文本字符串。列值为 0 或 1

0 投票
2 回答
1360 浏览

java - 从 Java 调用 python 函数的不同/更好的方法

我对python很陌生,正在尝试从java调用python的函数。

我的主要要求是这些:

  • call 应该是透明的,从某种意义上说,它不应该.py仅仅为了能够从 java 调用它而需要修改文件。我可能会得到任何包含一些函数的 python 文件。我应该能够调用这些函数中的任何一个而不需要修改.py文件。
  • 我希望能够将原始类型(int,Stringfloats)或非原始类型(HashMap, ArrayList)的参数从 java 发送到 python 函数,并从 python 接收返回的对象(可能是原始类型或非原始类型)到爪哇。我也在使用 pandas DataFrame 和 numpy ndarray,因此也希望能够与 java 之间发送和接收相应的对象。
  • 愿意坚持使用 CPython 而不是 Jython,因为我可能需要使用 Jython 中可能不可用的较新库。

我在网上找到了几个选项。少数是:

  • 使用 Jython 的PythonInterpreter,我可以使用它调用 python 函数,而无需对.py脚本文件进行任何更改:

    py1.py

    JythonTest.groovy

    我能够很好地满足我的需求。但它不是 CPython。

  • 使用ScriptEngine:这与 PythonInterpreter 非常相似。但反对它的 Jython。此外,与 PythonInterpreter 不同的是,我们不能使用 Jython 2.5+,也不能直接访问 PyObjects。所以这个选项可以很好的关闭。

  • 使用py4j:找不到与 Jython PythonInterpreter 一样最小的示例
  • 使用java2python。但是没有太多关于从java调用python的信息,所以我可以断定我的上述要求是否可以满足。任何人都可以对此有所了解吗?更具体地说,如果我们可以编写与 Jython PythonInterpreter 中的代码一样少的代码。
  • 使用JPype:但是在快速完成之后,我觉得我将无法像使用 Jython PythonInterpreter 那样编写最少的代码。我也觉得这个项目有点没有在开发中。是吗?

如果我正确理解了上述所有方法,那么 Jython PythonInterpreter 似乎是最佳选择。我在掌握它们时是否犯了错误?还有其他更好的选择吗?

0 投票
1 回答
876 浏览

jdbc - IllegalArgumentException:u'错误的 FS:file://spark-warehouse,预期:file:///'

我正在尝试使用 PySpark 将我的 Postgres 数据库加载到 Spark 中:

我收到以下错误,我不知道这意味着什么。

0 投票
0 回答
368 浏览

apache-spark - 如何在没有 `py4j.java_gateway:Error` 的情况下优雅地完成 pyspark 单元测试?

如何在测试结束时优雅地完成 pyspark 单元测试而不会看到这个烦人的错误?似乎 python 客户端正在失去与 spark 上下文或类似内容的通信。

错误:py4j.java_gateway:发送或接收时出错。回溯(最后一次调用):文件“C:\Spark\python\lib\py4j-0.10.1-src.zip\py4j\java_gateway.py”,第 826 行,在 send_command ConnectionResetError:[WinError 10054] 现有连接发送命令时被远程主机INFO:root:Exception强行关闭。

0 投票
1 回答
54 浏览

java - 通过 Python 中的 py4j 在 Java corenlp 情绪评分程序中编译错误

我主要使用 Python 和 Java 新手。但是我正在尝试编写一个 Java 程序并通过 Py4j Python 包使其在 Python 中工作。以下程序是我从一个例子改编的。我遇到了编译错误。你能解释一下吗?我很确定这是基本错误。谢谢。