Mulai sekarangMulai gratis

Menyortir vs. mengurutkan

Sejauh ini di bab ini, Anda telah mengeksplorasi beberapa fungsi transformasi fitur dari MLlib Spark. sparklyr juga menyediakan akses ke sejumlah fungsi yang memanfaatkan Spark DataFrame API.

Cara dplyr untuk mengurutkan sebuah tibble adalah menggunakan arrange(). Anda juga dapat mengurutkan tibble menggunakan Spark DataFrame API dengan sdf_sort(). Fungsi ini menerima vektor karakter berisi kolom-kolom yang akan digunakan untuk pengurutan, dan saat ini hanya mendukung pengurutan menaik.

Sebagai contoh, untuk mengurutkan berdasarkan kolom x, kemudian (jika ada nilai yang sama) berdasarkan kolom y, lalu kolom z, kode berikut membandingkan pendekatan dplyr dan Spark DataFrame.

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

Untuk melihat metode mana yang lebih cepat, cobalah keduanya: arrange() dan sdf_sort(). Anda dapat melihat berapa lama kode Anda berjalan dengan membungkusnya dalam microbenchmark() dari paket dengan nama yang sama.

microbenchmark({
  # your code
})

Anda dapat mempelajari lebih lanjut tentang memprofil kecepatan kode Anda di kursus Writing Efficient R Code.

Latihan ini merupakan bagian dari kursus

Pengantar Spark dengan sparklyr di R

Lihat Kursus

Instruksi latihan

Sambungan Spark telah dibuat untuk Anda sebagai spark_conn. Sebuah tibble yang terhubung ke metadata trek yang disimpan di Spark telah didefinisikan sebelumnya sebagai track_metadata_tbl.

  • Gunakan microbenchmark() untuk membandingkan lamanya waktu yang dibutuhkan untuk melakukan tindakan berikut.
    • Gunakan arrange() untuk mengurutkan baris track_metadata_tbl berdasarkan year, lalu artist_name, lalu release, lalu title.
    • Kumpulkan hasilnya.
    • Lakukan hal yang sama lagi, kali ini gunakan sdf_sort() alih-alih arrange(). Ingat untuk memberi tanda kutip pada nama kolom.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

# 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
)
Edit dan Jalankan Kode