Spark 조인에서 브로드캐스팅 사용하기
Spark에서 테이블 조인은 클러스터 워커 간에 분산되어 실행됩니다. 데이터가 로컬에 없으면 다양한 셔플 작업이 필요하고, 이는 성능에 부정적인 영향을 줄 수 있어요. 대신 Spark의 broadcast 연산을 사용해 지정한 데이터를 각 노드에 복사해 주겠습니다.
몇 가지 팁:
- 더 작은 DataFrame을 브로드캐스트하세요. DataFrame이 클수록 워커 노드로 전송하는 데 시간이 더 오래 걸립니다.
- 작은 DataFrame의 경우, 브로드캐스트를 생략하고 Spark가 자체적으로 최적화를 찾도록 두는 것이 더 나을 수 있어요.
- 쿼리 실행 계획에서 broadcastHashJoin이 보이면 브로드캐스팅이 성공적으로 설정된 것입니다.
DataFrame flights_df와 airports_df를 사용할 수 있어요.
이 연습은 강의의 일부입니다
PySpark로 데이터 정제하기
연습 안내
pyspark.sql.functions에서broadcast()메서드를 가져오세요.- 브로드캐스팅을 사용해
flights_df와airports_df를 조인하여 새로운 DataFramebroadcast_df를 만드세요. - 쿼리 플랜을 표시하고 원래와의 차이점을 살펴보세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Import the broadcast method from pyspark.sql.functions
from ____ import ____
# Join the flights_df and airports_df DataFrames using broadcasting
broadcast_df = flights_df.____(____(airports_df), \
flights_df["Destination Airport"] == airports_df["IATA"] )
# Show the query plan and compare against the original
broadcast_df.____()