일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- TensorFlow
- 캐글
- 홍대 맛집
- Transformer
- AI Tech 준비과정
- Ai
- AI 엔지니어 기초 다지기
- pycharm
- NLP
- yolo
- tensorflow 예제
- mllib
- r
- DataSet
- 부스트캠프
- 자연어
- 위기의코딩맨
- kaggle
- 서울 맛집
- 연남 맛집
- 부스트캠프 ai tech 준비과정
- 데이터 시각화
- spark
- Spark MLlib
- AI tech
- RDD
- 부스트클래스
- 맛집
- 연남동 맛집
- Python
- Today
- Total
We-Co
[We-Co] Spark RDD 집계 연산 본문
안녕하세요. 위기의코딩맨입니다.
오늘은 Spark RDD 집계와 관련된 연산들을 알아보도록 하겠습니다.
[ reduceByKey() ]
RDD의 구성이 키와 값으로 구성되어 있어야 사용가능합니다.
같은 키의 값들을 하나의 값으로 더해서 새로운 RDD를 생성하는 메서드입니다.
val rdd = sc.parallelize(List("a","b","b")).map((_,1))
val result = rdd.reduceByKey(_ +_)
print(result.collect.mkString(", "))
결과 값은 (a,1), (b,2) 이유는 rdd의 인자 중 키 b가 2개 존재하며, 1의 인자를 갖고 있어 1+1 하여 b는 2의 출력 값을 얻게됩니다.
[ foldBykey() ]
RDD의 구성이 키와 값으로 구성되어 있어야 사용가능합니다.
reduceBykey()와 같은 키의 값들을 하나의 값으로 더해서 새로운 RDD를 생성하는 것은 동일하지만
연산 초기 값을 메서드의 인자로 전달하여 병합 할때 사용할 수 있다는 점에서 차이가 있습니다.
0 = 두개의 정숫값을 더하는 함수
"" = 문자열을 만드는 함수
val rdd = sc.parallelize(List("a","b","b")).map((_,1))
val result = rdd.foldByKey(0)(_+_)
print(result.collect.mkString(", "))
결과 값은 (a,1),(b,2)가 출력 되는 것을 확인할 수있습니다. 0을 입력한 이유는 느낌으로는 a,b,b의 값들은 정수 값을 더해야 하기 때문입니다.
[ combineByKey(), aggregateByKey() ]
RDD의 구성이 키와 값으로 구성되어 있어야 사용가능합니다.
reduceByKey(), foldByKey()와 유사하지만, 같은 키를 가진 값들을 병합할때 값의 타입이 바뀔수 있다는 점에서 차이가 있습니다.
("a",1)("a",1)("a",1)를 combineByKey()로 병합하면 ("a", 임이로정의한 클래스) 로 결과가 나올 수 있습니다.
aggregateByKey()는 foldByKey()와 유사하게 combineByKey()에서 초기값을 생성하는 부분이 있다는 차이점이 있습니다.
두개의 예제는 조금 더 깊게 들어가봐야함으로 나중에 따로 알아보도록 하겠습니다.
오늘은 Spark RDD의 집계 연산 메서드들을 간단하게 알아보았습니다.
알아갈수록 점점 어려워지는 Spark...
'Spark' 카테고리의 다른 글
[We-Co] Spark RDD filter 및 정렬 연산 (0) | 2021.09.01 |
---|---|
[We-Co] Spark RDD PIPE 및 파티션 연산 (0) | 2021.08.27 |
[We-Co] Spark RDD의 집합 연산 (0) | 2021.08.26 |
[We-Co] groupBy(), groupByKey(), cogroup() - Spark (0) | 2021.08.24 |
[We-Co] RDD 생성 (0) | 2021.08.11 |