목록Data (66)
우노
HttpClient란? 간혹 다른 서버로부터 request를 보내 response 받아 데이터를 처리해야할 때가 있는데, 이 때, Apache HttpClient를 이용하면 간편하게 HTTP request를 보낼 수 있습니다. 예제 코드 import org.apache.http.impl.client.HttpClients import org.apache.http.client.methods.HttpPost import org.apache.http.entity.StringEntity import org.apache.http.client.methods.CloseableHttpResponse import org.apache.http.util.EntityUtils // api url 선언 val apiurl = "..
System.currentTimeMillis() console이 아닌 jar file을 통해 Apache Spark를 작업할 때, Spark 작업의 부분적인 실행 시간을 확인하고 싶다면, 아래와 같이 로그를 찍어가며 확인 할 수 있다. 사용 예제 // Scala에서 사용할 수 있는 Java 기반 로깅 유틸리티 import org.apache.log4j.LogManager val log = LogManager.getRootLogger // Time 측정 (ms단위) val tik0 = System.currentTimeMillis() val tik1 = System.currentTimeMillis() // 총 실행시간 (ms단위) val res = "Time taken : " + (tik1-tik0).toS..
Spark gemm Spark의 gemm 함수는 SparseMatrix * DenseMatrix를 지원합니다. 즉, Sparse Matrix와 Dense Matirx 간 곱셈을 지원하는 함수입니다. github https://github.com/apache/spark/blob/fc182f7e7f9ff55a6a005044ae0968340cf6f30d/mllib/src/main/scala/org/apache/spark/mllib/linalg/BLAS.scala#L478 알고리즘 순서 우측행렬 컬럼 기준으로 좌측행렬 컬럼이 이중포문을 이루며 곱해집니다. 우측행렬 컬럼은 Dense하게 모든 요소를 곱셈에 사용하지만, 좌측행렬 컬럼은 존재하는 요소만 곱셈에 사용합니다. 곱셈 결과값은 아래와 같은 형태로 결과 데이..
Breeze canMulM_DM Breeze의 canMulM_DM 함수는 CSCMatrix * DenseMatrix를 지원합니다. 즉, Sparse Matrix와 Dense Matirx 간 곱셈을 지원하는 함수입니다. github https://github.com/scalanlp/breeze/blob/b965a1c36e955a87fdffa1b9f5b3f44e3a5f191c/math/src/main/codegen/breeze/linalg/operators/CSCMatrixOps.scala#L647 알고리즘 순서 우측행렬 컬럼 기준으로 좌측행렬 컬럼이 이중포문을 이루며 곱해집니다. 우측행렬 컬럼은 Dense하게 모든 요소를 곱셈에 사용하지만, 좌측행렬 컬럼은 존재하는 요소만 곱셈에 사용합니다. 곱셈 결과값은..
Breeze canMulM_M Breeze의 canMulM_M 함수는 CSCMatrix * CSCMatrix를 지원합니다. 즉, Sparse Matrix 간 곱셈을 지원하는 함수입니다. github https://github.com/scalanlp/breeze/blob/b965a1c36e955a87fdffa1b9f5b3f44e3a5f191c/math/src/main/codegen/breeze/linalg/operators/CSCMatrixOps.scala#L708 Code implicit def canMulM_M[@expand.args(Int, Float, Double, Long) T] : breeze.linalg.operators.OpMulMatrix.Impl2[CSCMatrix[T], CSCMatri..
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...
log4j Apache Spark 작업을 실행할 때, 작업이 어떻게 진행되는지 로그를 찍어가며 확인하고 싶다면 Apache log4j을 사용해 Log를 확인할 수 있다. log4j는 Scala에서도 사용할 수 있는 인기있는 Java 기반 로깅 유틸리티이다. 사용 예제 import org.apache.log4j.LogManager val log = LogManager.getRootLogger log.warn("test")
Matrix data SNAP Stanford는 다양한 Graph dataset을 제공한다. http://snap.stanford.edu/data/index.html 해당 포스트에서는 Networks with ground-truth communities의 하위 Graph dataset을 Matrix dataset으로 변환해 사용했으며, 변환하기 위해선 몇가지 전처리가 필요하다. https://wooono.tistory.com/177?category=914989 Matrix dataset이 준비됐다면, 이제 Matrix의 Node 별 NNZ를 계산해 볼 것이다. 위 과정에서 전처리한 Matrix dataset은 대칭행렬이기 때문에 행 기준 or 열 기준 Node 별 NNZ 값은 동일하다. Matrix의 N..
Matrix를 일정 단위로 slice 한 뒤 각각의 nnz, density 구하기 Input Matrix data Matrix data의 행 크기 Matrix data의 열 크기 Slice 하고자하는 행 크기 Slice 하고자하는 열 크기 Output Slice 별 nnz Slice 별 density Slice 별 nnz의 평균 Slice 별 density의 평균 코드 해당 코드는 (317080,317080) 행렬을 (40000,50000) 단위로 자른것이며 총 42개의 Slice가 발생합니다. import scala.collection.mutable.ArrayBuffer import scala.math.BigDecimal // inputfile val input = sc.textFile("s3://sn..
SNAP Stanford SNAP Stanford에는 다양한 Graph dataset을 제공한다. http://snap.stanford.edu/data/index.html 이 포스트에서는 Networks with ground-truth communities의 하위 데이터들을 사용했다. Graph data type SNAP Stanford에서 Graph data는, 두 가지 type(Undirected, Directed)으로 구성 되어있다. Undirected edge에 방향이 없는 대칭 그래프 예) Undirected graph data (Nodes : 334863, Edges : 925872) 내부 1 88160 1 118052 1 161555 . . . 548368 548454 548391 54841..