우노
[Spark] Spark의 Vector, Local Matrix 연산 본문
참고 사이트
- github : https://github.com/apache/spark/tree/master/mllib/src/main/scala/org/apache/spark/mllib/linalg
- Quickstart : https://github.com/scalanlp/breeze/wiki/Quickstart
- Quickstart : https://github.com/scalanlp/breeze/wiki/Linear-Algebra-Cheat-Sheet
Spark의 Vector ( SparseVector , DenseVector)
연산 기능이 없다.( spark 3.0.0 이상부터 같은 패키지 내 BLAS.scala 의 dot 사용 가능 )
// Vectors 라이브러리 호출 import org.apache.spark.mllib.linalg.Vectors // SparseVector 생성 // Sparse( 벡터의 크기, [값 존재하는 인덱스 순서], [인덱스별 값] ) val sv = Vectors.sparse(3, Array(0,2), Array(1.0,2.0)) // DenseVector 생성 val dv = Vectors.dense(Array(1.0,2.0,3.0))
Spark의 Local Matrix ( SparseMatrix , DenseMatrix )
SparseMatrix
reference : https://spark.apache.org/docs/2.0.0/api/java/org/apache/spark/mllib/linalg/SparseMatrix.html
-
// SparseMatrix 라이브러리 호출 import org.apache.spark.mllib.linalg.SparseMatrix // SparseMatrix(CSC형식) 생성 // 행크기(rows), 열크기(cols), 열 압축 정보 배열(colPtrs), 열 순서대로 데이터의 행 인덱스 배열(rowIndices),열 순서대로 데이터 배열(values) val sm = new SparseMatrix(2,3,Array(0,1,2,3), Array(0,1,0), Array(1.0,7.0,3.0)) // COO 데이터를 불러와 SparseMatrix(COO형식) 생성 val rdd = sc.textFile("s3://non-square-matrix/M_633432_10000_55420_0.000009.txt/part-00000") val rdd_iterable = rdd.map(x=>x.split(" ")).map(x => (x(0).toInt, x(1).toInt, x(2).toDouble)).collect.toIterable val sm1 = SparseMatrix.fromCOO(633432,10000,rdd_iterable) // COO 데이터를 생성해 SparseMatrix(COO형식) 생성 // 행,렬,값 Tuple이 들어가 있는 Array val coo = Array((0,0,3.0),(1,1,4.0)) val sm2 = SparseMatrix.fromCOO(2,2,coo.toIterable) // Spark가 제공하는 SparseMatrix 연산 경우의 수 sm.multiply(sv) // SparseMatrix * SparseVector sm.multiply(dv) // SparseMatrix * DenseVector sm.multiply(sm.toDense.transpose) // SparseMatrix * DenseMatrix = DenseMatrix
DenseMatrix
reference : http://maxpumperla.com/java-book/api/scala/org/apache/spark/mllib/linalg/DenseMatrix.html
-
// DenseMatrix 라이브러리 호출 import org.apache.spark.mllib.linalg.DenseMatrix // DenseMatrix 생성 val dm = new DenseMatrix(2,3,Array(1.0,2.0,3.0,1.0,2.0,3.0)) // 요소가 전부 0으로 채워진 DenseMatrix 생성 val dm1 = DenseMatrix.zeros(10, 10) // spark가 제공하는 DenseMatrix 연산 경우의 수 dm.multiply(sv) // DenseMatrix x SparseVector dm.multiply(dv) // DenseMatrix x DenseVector dm.multiply(dm.transpose) // DenseMatrix x DenseMatrix = DenseMatrix
'Data > Spark' 카테고리의 다른 글
[Spark] SparkConf, spark-shell, spark-submit, spark-defaults.conf 적용 예 (0) | 2020.07.10 |
---|---|
[Spark] spark.driver.maxResultSize 오류 (0) | 2020.07.10 |
[Spark] Local file에 write하기 (0) | 2020.07.09 |
[Spark] Breeze의 Vector, Matrix 연산 (0) | 2020.07.09 |
[Spark] SBT(Simple Build Tool) 설치하기 (0) | 2020.07.07 |
Comments