복붙노트

[SCALA] 아파치 스파크의 매트릭스 곱셈 [폐쇄]

SCALA

아파치 스파크의 매트릭스 곱셈 [폐쇄]

아파치 스파크 및 Java를 사용하여 행렬 곱셈을 수행하려합니다.

나는 2 개 주 질문이 :

해결법

  1. ==============================

    1.모든 입력 데이터 및 치수 그러나 일반적으로 당신이 org.apache.spark.mllib.linalg.distributed에서 RDD하지만 분산 된 데이터 구조 중 하나가 아닌 원하는 것을 말하기에 따라 달라집니다. 이 순간 그것은 DistributedMatrix의 네 가지 구현을 제공

    모든 입력 데이터 및 치수 그러나 일반적으로 당신이 org.apache.spark.mllib.linalg.distributed에서 RDD하지만 분산 된 데이터 구조 중 하나가 아닌 원하는 것을 말하기에 따라 달라집니다. 이 순간 그것은 DistributedMatrix의 네 가지 구현을 제공

    로컬 행렬 처음 두 실시지지 승산 :

    val localMatrix = Matrices.dense(3, 2, Array(1.0, 2.0, 3.0, 4.0, 5.0, 6.0))
    
    indexedRowMatrix.multiply(localMatrix).rows.collect
    // Array(IndexedRow(0,[1.0,4.0]), IndexedRow(0,[2.0,5.0]),
    //   IndexedRow(0,[3.0,6.0]))
    

    세번째는 한 행렬이 블록 당 열 수가 다른 행렬의 블록 당 행의 수와 일치 등의 다른 BlockMatrix 곱해질 수있다. CoordinateMatrix는 곱셈을 지원하지만, 작성 및 분산 행렬의 다른 유형 변환하는 매우 간단하지 않습니다

    blockMatrix.multiply(coordinateMatrix.toBlockMatrix(3, 3))
    

    각 유형은 자신의 강하고 약한면을 가지고 있으며, 당신이 스파 스 또는 밀도 요소 (벡터 또는 블록 행렬)를 사용할 때 고려해야 할 몇 가지 추가 요소가 있습니다. 비싼 셔플을 필요로하지 않기 때문에 로컬 행렬 곱하면 일반적으로 바람직하다.

    당신은 MLlib 데이터 유형 가이드의 각 유형에 대한 자세한 내용을 확인할 수 있습니다.

  2. from https://stackoverflow.com/questions/33558755/matrix-multiplication-in-apache-spark by cc-by-sa and MIT license