Spark

[Spark] 행렬 덧셈, 곱셈

도도고영 2024. 4. 21. 11:22

Matrix Computation: 덧셈

1. Format

3 4

1 3

 

003 -> (0,0)에 3

014

101

113

 

2. 두 Matrix에 대해 pair rdd 만들기

mapTopair transformation 사용

 

3. 두 RDD 합치기

union 사용 (중복 허용)

 

4. 같은 key를 가지는 element 더하기

ReduceByKey

 

 

Matrix Computation: 곱셈

*A행렬의 열의 개수와 B행렬의 행의 개수가 같아야 함

*A행렬의 어떤 숫자는 B행렬의 열의 개수만큼 곱해짐, B 행렬의 어떤 숫자는 A행렬의 행의 개수만큼 곱해짐

*결과 행렬은 A의 행의 개수와 B행렬의 열의 개수로 결정됨 

 

1. 개별 곱 구하기: Format

a(ix) b(xj)를 처리할 때 key를 (i,j,x)로 함

matrix_a를 덧셈과 같은 방법으로 rdd 생성 후, (i,j.x) key를 붙이기

matrix_b도 동일 진행

위 과정에 flatMapToPair 사용

 

2. 개별 곱 구하기: 두 RDD 합치기

union 사용 (중복 허용) -> ReduceByKey 사용, value 곱해줘야 함!

 

3. 곱셈 결과 합하기: 덧셈을 위해 key 변경

mapToPair 사용해 (i,j,x)를 (i,j)로 key 변경

 

4. 곱셈 결과 합하기: 같은 key를 가지는 element 더하기

ReduceByKey