🐣 표현식
- DataFrame 레코드의 여러 값에 대한 트랜스포메이션 집합
- expr 함수로 사용 가능
- 컬럼은 단지 표현식일 뿐이다. expr("somCol")과 col("someCol")은 동일하다.
- 컬럼과 컬럼의 트랜스포메이션은 파싱된 표현식과 동일한 논리적 실행 계획으로 컴파일된다. (col("someCol") - 6) < col("otherCol")과 expr("(someCol - 6) < otherCol")은 동일하다.
- 스파크는 연산 순서를 지정하는 논리적 트리로 컴파일한다. (지향성 비순환 그래프 DAG)
🐣 DataFrame의 트랜스포메이션
- 로우나 컬럼 추가 및 제거
- 로우 → 컬럼 변환, 컬럼 → 로우 변환
- 컬럼값 기준 로우 순서 변경
🐣 selectExpr
= select + expr
🐣 repartition과 coalesce
- 자주 필터링하는 컬럼 기준으로 데이터를 분할하여 최적화가 가능하다.
- repartition
- 전체 데이터 셔플
- 자주 필터링되는 컬럼을 기준으로 파티션을 재분배
- 파티션 수 지정 가능
- coalesce
- 전체 데이터를 셔플하지 않고 파티션을 병합하려는 경우 사용
🐣 collect / take / show / toLocalIterator
- 드라이버로 로우 데이터 수집
- collect
- take
- show
- toLocalIterator
- 이터레이터로 모든 파티션의 데이터를 드라이버에 전달
- 데이터셋의 파티션을 차례로 반복 처리할 수 있다.
[출처] 스파크 완벽 가이드 (빌 체임버스, 마테이 자하리아 지음)