【问题标题】:pyspark wrapper for IndexedRowMatrix multiply()IndexedRowMatrix multiply() 的 pyspark 包装器
【发布时间】:2016-04-07 02:47:57
【问题描述】:

IndexedRowMatrix 类的 PySpark 包装器不包含所有方法 - 特别是,即使它包含在它包装的 Java 实现中,也缺少 multiply() 方法。我尝试将其手动添加到 PySpark/MlLib/inalg/distributed.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:方法 multiply([class org.apache.spark.mllib.linalg.distributed.IndexedRowMatrix]) 不存在 在 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:335) 在 py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:344) 在 py4j.Gateway.invoke(Gateway.java:252) 在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) 在 py4j.commands.CallCommand.execute(CallCommand.java:79) 在 py4j.GatewayConnection.run(GatewayConnection.java:209) 在 java.lang.Thread.run(Thread.java:745)

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

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-mllib


    【解决方案1】:

    IndexedRowMatrix 不支持与另一个 IndexedRowMatrix 相乘。它只支持乘以本地Matrix (mllib.linalg.Matrix)。

    要乘以分布式矩阵,您必须围绕BlockMatrix 创建一个包装器,这是目前(Spark 1.6)MLlib 中唯一支持乘以另一个分布式矩阵的分布式结构。

    【讨论】:

      猜你喜欢
      • 2016-06-20
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      • 2021-01-15
      相关资源
      最近更新 更多