2016-04-07 17 views
-1

IndexedRowMatrixクラスのPySparkラッパーには、すべてのメソッドが含まれていません。具体的には、ラップするJava実装に含まれていてもmultiply()メソッドがありません。しかしIndexedRowMatrixのpysparkラッパーmultiply()

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を次のように私は、手動でPySpark/MlLib/inalg/distributed.pyに追加してみました:メソッド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.Ab (GatewayConnection.java:209) (java.lang.Thread.run)で をpy4j.make.CallCommand.execute(CallCommand.java:79)で stractCommand.invokeMethod(AbstractCommand.java:133) Thread.java:745)

これはSparkバージョン1.6.1なので、このメソッドAFAIKを含める必要があります。何か不足していますか?

答えて

0

IndexedRowMatrixは、別の乗算をサポートしませんIndexedRowMatrix。ローカルMatrixmllib.linalg.Matrix)による乗算のみをサポートしています。

分散行列を乗算するには、別の分散行列による乗算をサポートするMLlibの唯一の分散構造であるBlockMatrixの周りにラッパーを作成する必要があります(Spark 1.6)。