问题标签 [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 回答
6866 浏览

python - Py4Java:ImportError:为 Apache Spark 运行 Python shell 时没有名为 numpy 的模块

我正在尝试关注此Apache Spark 演讲中的实时编码

这是我的 IPython 笔记本,直到我遇到错误:

IPython notebook 中的 spark + 闪电演示

所以安装了numpy:

然而,当我运行model = KMeans.train(data, k=5)依赖于的命令时,Spark 使用numpyPy4Java库会引发此错误。如何告诉py4j/protocol.pySpark 文件夹中的这个 Python 脚本从我现有的 numpy 安装中导入./anaconda/lib/python2.7/site-packages

0 投票
2 回答
1372 浏览

python - 当产生一个新进程时,导入会发生什么?

生成新进程时,导入的模块变量会发生什么?

IE

在哪里:

foob​​ar 正在访问在 someOtherModule 开始时声明的内容:

someOtherModule.py:

具体来说,我有一个模块(称为 Y),它在顶部初始化了一个 py4j 网关,在任何函数之外。在模块 X 中,我一次加载多个文件,加载后对数据进行排序的函数使用 Y 中的函数,该函数又使用网关。

这个设计是pythonic吗?我应该在每个新进程生成后导入我的 Y 模块吗?或者有没有更好的方法来做到这一点?

0 投票
2 回答
1527 浏览

python - Python -> Py4j -> Spark -> Cassandra

我想在只有四行的测试 Cassandra 表上测试一个简单的 Spark 行计数作业,以验证一切正常。

我可以通过 Java 快速完成这项工作:

现在,我想让同样的东西在 Python 中工作。Spark 发行版附带一组未捆绑的 PySpark 源代码,用于从 Python 使用 Spark。它使用一个名为 py4j 的库来启动 Java 服务器并通过 TCP 网关编组 Java 命令。我直接使用该网关来使其正常工作。

我通过 --driver-class-path 选项为 Java SparkSubmit 主机指定以下额外的 jar:

这是执行行数测试的核心 Python 代码:

在最后一行,我收到以下错误:

显然,存在一些配置或设置问题。我不确定如何合理地调试或调查或我可以尝试什么。有更多 Cassandra/Python/Spark 专业知识的人可以提供一些建议吗?谢谢!

编辑:一位同事设置了一个 spark-defaults.conf 文件,该文件是其根目录。我不完全理解为什么这会导致 Python 而不是 Java 的问题,但这没关系。我不希望该 conf 文件并通过问题解决它。

0 投票
3 回答
14721 浏览

python - Pyspark py4j PickleException:“构造 ClassDict 的预期参数为零”

这个问题是针对熟悉 py4j 的人 - 并且可以帮助解决酸洗错误。我正在尝试向 pyspark PythonMLLibAPI 添加一个方法,该方法接受命名元组的 RDD,执行一些工作,并以 RDD 的形式返回结果。

该方法是在 PYthonMLLibAPI.trainALSModel() 方法之后建模的,其类似的现有相关部分是:

用于对新代码建模的现有 python Rating 类是

这是尝试所以这里是相关的类:

新的python 类 pyspark.mllib.clustering.MatrixEntry:

PythonMLLibAPI 中的新方法foobarRDD

现在让我们尝试一下:

结果的相关部分:

这表明输入 rdd 是“整体”。然而酸洗不开心:

下面是 python 调用堆栈跟踪的视觉效果:

在此处输入图像描述

0 投票
1 回答
2863 浏览

apache-spark - 使用 Py4J 调用采用 JavaSparkContext 并返回 JavaRDD 的方法

我正在寻找一些帮助或示例代码来说明 pyspark 在 spark 本身之外调用用户编写的 Java 代码,该代码从 Python 获取 spark 上下文,然后返回用 Java 构建的 RDD。

为了完整起见,我使用的是 Py4J 0.81、Java 8、Python 2.7 和 spark 1.3.1

这是我用于 Python 一半的内容:

Java部分是:

在 Python 端运行产生:

Java端报告:

问题似乎是我没有正确地将JavaSparkContextPython 传递给 Java。当我使用 from python 时,也会发生JavaRDD同样的失败。nullsc._scj.sc()

从 Python 调用使用 spark 的用户定义的 Java 代码的正确方法是什么?

0 投票
0 回答
1943 浏览

ipython - Zeppelin:构造函数 org.apache.spark.api.python.PythonRDD 不存在

IPython 笔记本

按照文档(PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS="notebook" ./bin/pyspark)开始,然后填写:

输出:sc.textFile(filename).count() = 500

Apache Zeppelin 笔记本

输出: (<class 'py4j.protocol.Py4JError'>, Py4JError(u'An error occurred while calling None.org.apache.spark.api.python.PythonRDD. Trace:\npy4j.Py4JException: Constructor org.apache.spark.api.python.PythonRDD([class org.apache.spark.rdd.MapPartitionsRDD, class [B, class java.util.HashMap, class java.util.ArrayList, class java.lang.Boolean, class java.lang.String, class java.lang.String, class java.util.ArrayList, class org.apache.spark.Accumulator]) does not exist\n\tat py4j.reflection.ReflectionEngine.getConstructor(ReflectionEngine.java:184)\n\tat py4j.reflection.ReflectionEngine.getConstructor(ReflectionEngine.java:202)\n\tat py4j.Gateway.invoke(Gateway.java:213)\n\tat py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:79)\n\tat py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:68)\n\tat py4j.GatewayConnection.run(GatewayConnection.java:207)\n\tat java.lang.Thread.run(Thread.java:745)\n\n',), <traceback object at 0x7f3f79e24440>)

0 投票
0 回答
1105 浏览

python - Py4JJavaError:由于 Windows 上 Spark 的阶段失败,作业中止

我已经从 git ( branch-1.4) 构建了最新的 spark,但是在执行文件 IO 时出现错误:

错误

顺便说一句:所有正常的东西都可以正常parallelize工作。

0 投票
1 回答
3211 浏览

python - PySpark 会话中缺少 java.util.HashMap

我在 Windows 7 x64 上使用Apache Spark 1.4.0,在 IPython 3.2.0 中使用 Java 1.8.0_45 x64 和 Python 2.7.10 x86

我正在尝试在 IPython 笔记本中编写一个基于DataFrame的程序,该笔记本读取和写入 SQL Server 数据库。

到目前为止,我可以从数据库中读取数据

并将数据转换为熊猫并做任何我想做的事情。(这有点麻烦,但是在将微软的 sqljdbc42.jar 添加到 spark-defaults.conf 中的 spark.driver.extraClassPath 后它可以工作)

当我使用DataFrameWriter API将数据写回 SQL Server 时,会出现当前问题:

 </p>

java.util.HashMap问题似乎是 py4j在将我的 connectionProperties 字典转换为 JVM 对象时找不到 Java类。将我的 rt.jar(带路径)添加到 spark.driver.extraClassPath 并不能解决问题。从写入命令中删除字典可以避免此错误,但写入失败当然是由于缺少驱动程序和身份验证。

编辑:o49.mode错误的一部分从运行更改为运行。

0 投票
0 回答
585 浏览

python - 带有泛型的 PY4J

使用以下类定义:

PY4J 将抛出以下错误:

如果您尝试实例化:

我确实在代码中的其他地方使用反射来搜索默认构造函数,但它的签名为(java.lang.Object, scala.reflection.ClassTag). 我不认为 PY4J 试图正确找到它。我知道,它大量使用反射,但也许它没有为这样的用例做好准备。

或者是否有任何解决方法可以成功实例化这样的泛型类?

0 投票
2 回答
952 浏览

java - 连接到由 Python 脚本生成的 JVM 以进行调试

我有一个 Python 代码,我使用 IntelliJ 运行它。Python 代码将执行一个java命令,该命令最终会生成一个 JVM。Python 和 JVM 使用 Py4J 和自定义套接字进行通信。如何使用 IntelliJ 连接到 JVM 以进行调试?