일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- pyspark
- Okt
- Python
- numpy
- selenium
- input
- 머신러닝
- 태블로
- 데이터
- 데이터 분석
- 크롤링
- 인공지능
- 파이썬
- scikit-learn
- iNT
- pandas
- SQL
- ionehotencoding
- Udemy
- Tableau
- Word Cloud
- 데이터분석
- 형태소분석기
- 시각화
- konlpy
- Today
- Total
반전공자
[PySpark] 액션 - take(), collect(), reduce() 본문
토마스 드라마브, 데니 리의 "PySpark 배우기"를 보고 배워나가는 과정을 기록한 글입니다 ♪
액션
- 데이터셋에서 스케줄된 태스크 실행
※ 트랜스포메이션과 액션의 차이점
트랜스포메이션
* RDD를 변환하는 함수
* 새로운 RDD를 생성하고 데이터의 처리 및 가공을 수행
* 레코드 단위로 수행
→ 데이터셋을 변경하고 가공하기 위한 일련의 명령어
액션
* 최종 결과를 반환하는 함수
* 실제 계산 수행하며 RDD의 모든 요소 처리
→ 액션 호출되면 저장된 명령어가 실제 수행되고 최종 결과값을 반환
.take(...) 함수
- 하나의 파티션에서 가장 위에 있는 n행을 리턴
- collect() 보다 자주 쓰임
- 큰 데이터셋일 수록 중요
→ 이전 포스팅에서도 꾸준히 레코드를 확인할 때 take 함수를 사용했기 때문에 낯설진 않다.
>>> data_first = data_from_file_conv.take(1)
* 데이터로부터 임의의 샘플을 얻고 싶다면, .takeSample() 함수를 사용하자
참고) .takeSample()
- 첫번째 파라미터 : 샘플링 재선택 허용여부
- 두번째 파라미터 : 리턴 데이터 개수 명시
- 세번째 : 랜덤 시드
ex) 재선택 하지 않고, 하나의 데이터만 추출한다. + 랜덤시드는 667
>>> data_take_sampled = data_from_file_conv.takeSample(False, 1, 667)
.collect(...) 함수
- RDD의 모든 앨리먼트를 드라이버로 리턴
.reduce(...) 함수
- 특정 함수를 사용해 RDD 개수 줄이기
- RDD의 총합을 구하기 위해 사용할 수 있음
>>> rdd1.map(lambda row: row[1]).reduce(lambda x, y: x+y)
15
- map() 트랜스포메이션을 이용해 RDD1의 값 리스트 생성
- 위 결과를 reduce() 함수로 처리
→ reduce() : 각 파티션에서 합계 함수(lambda) 수행 후 마지막 집계 수행되는 드라이버 노드에 합계 리턴
참고) .reduceByKey(...) 함수
- reduce()와 비슷하게 동작
- + 키 값 기반으로 리듀스
>>> data_key = sc.parallelize(
... [('a', 4), ('b', 3), ('c', 2), ('a', 8), ('d', 2), ('b', 1), ('d', 3)], 4)
>>> data_key.reduceByKey(lambda x,y : x+y).collect()
[('b', 4), ('c', 2), ('a', 12), ('d', 5)]
→ 키 값을 기준으로 합계한 결과가 출력된다
'데이터분석 > PySpark' 카테고리의 다른 글
[PySpark] 데이터프레임 - API, SQL (0) | 2023.03.10 |
---|---|
[PySpark] 액션 - count(), saveAsTextFile(), foreach() (0) | 2023.03.10 |
[PySpark] 트랜스포메이션 - sample(), leftOuterJoin(), repartition() (0) | 2023.03.10 |
[PySpark] 트랜스포메이션 - map(), filter(), flatMap(), distinct() (0) | 2023.03.10 |
[PySpark] 텍스트 파일 로드 (0) | 2023.03.10 |