오늘의 인기 글
최근 글
최근 댓글
Today
Total
05-06 00:00
관리 메뉴

우노

[Spark] Spark SparseMatrix를 Breeze CSCMatrix로 변환하는 방법 본문

Data/Spark

[Spark] Spark SparseMatrix를 Breeze CSCMatrix로 변환하는 방법

운호(Noah) 2021. 3. 4. 14:38

Spark SparseMatrix를 CSC format으로 생성 시, 매개변수 순서

  • 행크기(rows)
  • 열크기(cols)
  • 열 압축 정보 배열(colPtrs)
  • 열 순서대로 데이터의 행 인덱스 배열(rowIndices)
  • 열 순서대로 데이터 배열(values)

Breeze CSCMatrix를 CSC format으로 생성 시, 매개변수 순서

  • 열 순서대로 데이터 배열(values)
  • 행크기(numRows)
  • 열크기(numCols)
  • 열 압축 정보 배열(colPtrs)
  • 열 순서대로 데이터의 행 인덱스 배열(rowIndices)

Spark SparseMatrix를 Breeze CSCMatrix로 변환하는 코드

import org.apache.spark.mllib.linalg.SparseMatrix
import breeze.linalg.CSCMatrix

// 왼쪽 spark sparsematrix 생성
val sp_l_sm = new SparseMatrix(2,3,Array(0,1,2,3), Array(0,1,0), Array(1.0,7.0,3.0))

// 오른쪽 spark sparsematrix 생성
val sp_r_sm = new SparseMatrix(2,3,Array(0,1,2,3), Array(0,1,0), Array(1.0,7.0,3.0))

// 왼쪽 spark sparsematrix를 breeze sparsematrix로 변환
val bz_l_sm = new CSCMatrix[Double](sp_l_sm.values, sp_l_sm.numRows, sp_l_sm.numCols, sp_l_sm.colPtrs, sp_l_sm.rowIndices)

// 오른쪽 spark sparsematrix를 breeze sparsematrix로 변환
val bz_r_sm = new CSCMatrix[Double](sp_r_sm.values, sp_r_sm.numRows, sp_r_sm.numCols, sp_r_sm.colPtrs, sp_r_sm.rowIndices)

// breeze sm * sm.t 진행
val result_bz_sm = bz_l_sm * bz_r_sm.t

// 결과 breeze sparsematrix를 spark sparsematrix로 변환
val result_sp_sm = new SparseMatrix(result_bz_sm.rows, result_bz_sm.cols, result_bz_sm.colPtrs, result_bz_sm.rowIndices, result_bz_sm.data)
Comments