IndexedRowMatrix multiply()的pyspark包装器

2024-09-28 01:25:52 发布

您现在位置:Python中文网/ 问答频道 /正文

IndexedRowMatrix类的PySpark包装器并没有包括所有的方法,特别是multiply()方法丢失了,即使它包含在它包装的Java实现中。我尝试手动将其添加到PySpark/MlLib/inalg/分布式.py,如下所示:

def multiply(self, other):
    other_java_matrix = other._java_matrix_wrapper._java_model
    java_matrix = self._java_matrix_wrapper.call("multiply", other_java_matrix)
    return IndexedRowMatrix(java_matrix)

但是,当我尝试使用此方法时,出现以下错误:

py4j.Py4JException: Method multiply([class org.apache.spark.mllib.linalg.distributed.IndexedRowMatrix]) does not exist at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335) at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:344) at py4j.Gateway.invoke(Gateway.java:252) at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) at py4j.commands.CallCommand.execute(CallCommand.java:79) at py4j.GatewayConnection.run(GatewayConnection.java:209) at java.lang.Thread.run(Thread.java:745)

这是Spark版本1.6.1,因此它应该包含此方法AFAIK。我错过什么了吗?在


Tags: 方法selfjavawrappermatrixmultiplygatewayat
1条回答
网友
1楼 · 发布于 2024-09-28 01:25:52

IndexedRowMatrix不支持与另一个IndexedRowMatrix相乘。它只支持与局部Matrixmllib.linalg.Matrix)相乘。在

为了乘法分布式矩阵,您必须创建一个包装器,它是目前MLlib中唯一支持与另一个分布式矩阵相乘的分布结构(spark1.6)。在

相关问题 更多 >

    热门问题