Spark (PartitionFilters vs PushedFilter 비교), (predicate pushdown vs projection pushdown)

Q·2023년 11월 23일
0

PartitionFilters vs PushedFilters

PartitionFilters란

특정 파티션에서만 데이터를 가져오고 관련 없는 파티션은 모두 생략합니다. 데이터 스캔 생략은 성능의 큰 향상을 가져다 줍니다.
PushedFilters 보다 선행된다.
PartitionFilter기술은 조건에 사용된 컬럼이 파티션되어 있고 스파크가 필터 조건을 충족하는 특정 디렉터리만 스캔할 때 사용됩니다.

PushedFilters란

PushedFilters 기술은 각 row 그룹의 최소 및 최대 통계를 먼저 읽고 최소 및 최대 범위가 필터 조건을 충족하는지 여부를 결정하여 메모리에 로드되는 데이터 양을 줄이는 데 도움이 됩니다.

Predicate pushdown vs Projection pushdown

Predicate pushdown

  • where 혹은 filter 절에서 적용 됨
  • 어떤 column이 필터링될 것 인지가 아닌 어떤 row가 필터링 될 것인지를 나타냄(row-based)
    PartitionFilters, PushedFilters가 해당됨
  • 'library.books'처럼 중첩된 컬럼에 조건을 걸면 단지 Null이 아닌 값의 레코드를 반환 함
  • partition pruning(PartitionFilters)가 여기에 속함
  • parquet 형식의 파일은 해당 값의 최소값과 최대값을 포함하여 각 열에 대해 몇 가지 다른 통계 메트릭을 유지, 관련 없는 데이터를 건너뛰고 필요한 데이터를 처리

Projection pushdown

  • select 절에서 적용 됨
  • 어떤 column이 필터링 될 것인지를 나타냄(column-based)
  • columnar fomat file(parquet)에 적용
  • table scan 프로세스에서 불필요한 필드(column)를 제거하여 file system/database와 spark engine 간의 데이터 전송을 최소화
  • 주로 데이터 집합에 너무 많은 열이 포함되어 있을 때 유용

참고

profile
Data Engineer

0개의 댓글