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

Lưu trữ kết quả trung gian

Như bạn đã thấy ở Chương 1, sao chép dữ liệu giữa R và Spark vốn dĩ rất chậm. Điều đó có nghĩa là việc thu thập dữ liệu như trong bài trước chỉ nên làm khi bạn thật sự cần.

Toán tử pipe rất tiện để xâu chuỗi các lệnh xử lý dữ liệu, nhưng nói chung, bạn không thể làm cả phân tích với mọi thứ nối chuỗi liền mạch. Ví dụ dưới đây là một thói quen tệ, vì bạn sẽ không thể gỡ lỗi mã của mình.

final_results <- starting_data %>%
  # 743 bước được pipe liên tiếp
  # ... %>%
  collect()

Điều đó tạo ra thế khó. Bạn cần lưu các kết quả tính toán trung gian, nhưng bạn không muốn collect vì nó chậm. Giải pháp là dùng compute() để thực thi phép tính, nhưng lưu kết quả trong một data frame tạm thời trên Spark. compute nhận hai đối số: một tibble và một tên biến cho Spark data frame sẽ lưu kết quả.

a_tibble %>%
  # một vài phép tính %>%
  compute("intermediate_results")

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

Nhập môn Spark với sparklyr trong R

Xem khóa học

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

Một kết nối Spark đã được tạo sẵn là spark_conn. Một tibble gắn với track metadata được lưu trên Spark đã được định nghĩa trước là track_metadata_tbl.

  • Lọc các hàng của track_metadata_tbl nơi artist_familiarity lớn hơn 0.8.
  • Tính toán kết quả bằng compute().
    • Lưu kết quả trong một Spark data frame tên "familiar_artists".
    • Gán kết quả cho một R tibble tên computed.
  • Xem các tập dữ liệu Spark hiện có bằng src_tbls().
  • In class() của computed. Lưu ý rằng khác với collect(), compute() trả về một remote tibble. Dữ liệu vẫn được lưu trong cụm Spark.

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.

# track_metadata_tbl has been pre-defined
track_metadata_tbl

computed <- track_metadata_tbl %>%
  # Filter where artist familiarity is greater than 0.8
  ___ %>%
  # Compute the results
  ___

# See the available datasets
___

# Examine the class of the computed results
___
Chỉnh sửa và Chạy Mã