시작하기무료로 시작하기

데이터 필터링

이제 기본적인 SQL 지식을 익히셨으니, Spark DataFrame에서 비슷한 작업을 어떻게 하는지 살펴보겠습니다.

.filter() 메서드를 보겠습니다. 예상하셨듯이, 이는 SQL의 WHERE 절과 대응됩니다. .filter()는 SQL 표현식의 WHERE 절에 올 수 있는 표현식을 문자열로 받거나, boolean(True/False) 값을 가진 Spark Column을 받을 수 있습니다.

예를 들어, 아래 두 표현식은 동일한 결과를 만듭니다:

flights.filter("air_time > 120").show()
flights.filter(flights.air_time > 120).show()

첫 번째 경우에는 .filter()문자열 을 전달합니다. SQL에서는 이 필터링 작업을 SELECT * FROM flights WHERE air_time > 120처럼 작성하겠죠. Spark의 .filter()는 문자열로 전달되는 한, SQL 쿼리의 WHERE 절에 들어갈 수 있는 어떤 표현식("air_time > 120"과 같은)도 받을 수 있습니다. 이때 문자열 안에서는 테이블 이름을 명시하지 않는다는 점도 SQL과 동일합니다.

두 번째 경우에는 .filter()boolean 값 컬럼 을 직접 전달합니다. flights.air_time > 120flights.air_time에서 120을 초과하는 레코드 위치에는 True, 그 외에는 False가 들어 있는 boolean 컬럼을 반환한다는 점을 기억하세요.

SparkSession 객체 spark와 Spark DataFrame flights는 이미 작업 공간에 준비되어 있습니다.

이 연습은 강의의 일부입니다

PySpark 기초

강의 보기

연습 안내

  • .filter() 메서드를 사용해 1000마일을 초과해 비행한 항공편을 두 가지 방식으로 찾으세요.
    • 먼저, 거리가 1000보다 큰지 확인하는 SQL 문자열.filter()에 전달하고 결과를 long_flights1에 저장하세요.
    • 다음으로, 같은 조건을 확인하는 boolean 값 컬럼을 .filter()에 전달하고 결과를 long_flights2에 저장하세요.
  • 두 DataFrame의 상단을 .show()로 출력해 실제로 동일한지 확인하세요!

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Filter flights by passing a string
long_flights1 = ____.____("____ > ____")

# Filter flights by passing a column of boolean values
long_flights2 = ____.____(____.____ > ____)

# Print the data to check they're equal
____.____()
____.____()
코드 편집 및 실행