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

Sắp xếp với arrange

Từ đầu chương đến giờ, bạn đã khám phá một số hàm biến đổi đặc trưng từ MLlib của Spark. sparklyr cũng cung cấp quyền truy cập vào một số hàm dựa trên Spark DataFrame API.

Cách của dplyr để sắp xếp một tibble là dùng arrange(). Bạn cũng có thể sắp xếp các tibble bằng Spark DataFrame API với sdf_sort(). Hàm này nhận một vector ký tự gồm các cột cần sắp xếp và hiện chỉ hỗ trợ sắp xếp tăng dần.

Ví dụ, để sắp xếp theo cột x, rồi (khi có trùng giá trị) theo cột y, rồi theo cột z, đoạn mã sau so sánh cách tiếp cận của dplyr và Spark DataFrame.

a_tibble %>%
  arrange(x, y, z)
a_tibble %>%
  sdf_sort(c("x", "y", "z"))

Để xem phương pháp nào nhanh hơn, hãy thử cả arrange()sdf_sort(). Bạn có thể xem mã của mình chạy mất bao lâu bằng cách bao nó trong microbenchmark() từ gói cùng tên.

microbenchmark({
  # your code
})

Bạn có thể tìm hiểu thêm về cách đo hiệu năng mã trong khóa học Writing Efficient R Code.

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

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

  • Dùng microbenchmark() để so sánh thời gian thực hiện các bước sau.
    • Dùng arrange() để sắp xếp các hàng của track_metadata_tbl theo year, rồi artist_name, rồi release, rồi title.
    • Thu kết quả bằng collect().
    • Lặp lại thao tác trên nhưng lần này dùng sdf_sort() thay cho arrange(). Nhớ đặt tên cột trong dấu nháy.

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

# Compare timings of arrange() and sdf_sort()
microbenchmark(
  arranged = track_metadata_tbl %>%
    # Arrange by year, then artist_name, then release, then title
    ___ %>%
    # Collect the result
    ___,
  sorted = track_metadata_tbl %>%
    # Sort by year, then artist_name, then release, then title
    ___ %>%
    # Collect the result
    ___,
  times = 5
)
Chỉnh sửa và Chạy Mã