[Apache Spark] 구조적 API 기본 연산

연수·2021년 11월 14일
0

spark

목록 보기
6/26

🐣 표현식

  • 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
    • 전체 DataFrame의 모든 데이터를 수집
  • take
    • 상위 N개의 로우를 반환
  • show
    • 여러 로우를 보기 좋게 출력
  • toLocalIterator
    • 이터레이터로 모든 파티션의 데이터를 드라이버에 전달
    • 데이터셋의 파티션을 차례로 반복 처리할 수 있다.

 

[출처] 스파크 완벽 가이드 (빌 체임버스, 마테이 자하리아 지음)

profile
DCDI

0개의 댓글