Spark
[Spark] 행렬 덧셈, 곱셈
도도고영
2024. 4. 21. 11:22
Matrix Computation: 덧셈
1. Format
A
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