Bắt đầu ngayBắt đầu miễn phí

Dùng broadcasting trong phép join của Spark

Hãy nhớ rằng các phép join bảng trong Spark được phân tán cho các worker trong cụm. Nếu dữ liệu không nằm tại chỗ, Spark sẽ cần thực hiện nhiều thao tác shuffle và điều này có thể làm giảm hiệu năng. Thay vào đó, ta sẽ dùng thao tác broadcast của Spark để cung cấp cho MỖI nút một bản sao của dữ liệu được chỉ định.

Một vài mẹo nhỏ:

  • Hãy broadcast DataFrame nhỏ hơn. DataFrame càng lớn thì thời gian truyền đến các worker càng nhiều.
  • Với các DataFrame nhỏ, đôi khi tốt hơn là bỏ qua broadcasting và để Spark tự tối ưu.
  • Nếu bạn xem kế hoạch thực thi truy vấn, broadcastHashJoin cho thấy bạn đã cấu hình broadcasting thành công.

Các DataFrame flights_dfairports_df đã sẵn sàng cho bạn sử dụng.

Bài tập này là một phần của khóa học

Làm sạch dữ liệu với PySpark

Xem khóa học

Hướng dẫn bài tập

  • Import phương thức broadcast() từ pyspark.sql.functions.
  • Tạo DataFrame mới broadcast_df bằng cách join flights_df với airports_df, sử dụng broadcasting.
  • Hiển thị kế hoạch truy vấn và xem xét điểm khác biệt so với bản gốc.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

# 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.____()
Chỉnh sửa và Chạy Mã