Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mencari Item N Teratas setiap Kumpulan dalam Spark DataFrame?

Bagaimana untuk Cekap Mencari Item N Teratas setiap Kumpulan dalam Spark DataFrame?

Barbara Streisand
Barbara Streisandasal
2024-12-25 22:55:17836semak imbas

How to Efficiently Find the Top N Items per Group in a Spark DataFrame?

Mengumpulkan dan TopN dengan Spark DataFrame

Pengenalan:
Spark DataFrame menyediakan ciri berkuasa untuk memanipulasi dan mengagregatkan data. Mengumpulkan data berdasarkan lajur tertentu dan kemudian melaksanakan operasi dalam setiap kumpulan, seperti mencari nilai N teratas, adalah keperluan biasa dalam pemprosesan data.

Pernyataan Masalah:
Pertimbangkan Cetuskan DataFrame dengan lajur seperti pengguna, item dan penilaian. Tugasnya adalah untuk mengumpulkan data mengikut pengguna dan mengembalikan item N teratas daripada setiap kumpulan, dengan N ialah nombor yang dipratentukan.

Penyelesaian:

Menggunakan Fungsi Tetingkap:

Scala kod:

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.{rank, desc}

val n: Int = ???

// Window definition
val w = Window.partitionBy($"user").orderBy(desc("rating"))

// Filter
df.withColumn("rank", rank.over(w)).where($"rank" <= n)

Penjelasan:
Kod ini menggunakan fungsi tetingkap untuk meletakkan kedudukan item dalam setiap kumpulan pengguna berdasarkan lajur penilaian dalam tertib menurun. Fungsi pangkat memberikan pangkat kepada setiap baris dalam partition, menunjukkan kedudukannya dalam senarai disusun. Dengan menapis pada kedudukan <= n, hanya N item teratas daripada setiap kumpulan dikekalkan.

Menggunakan row_number Fungsi:

Jika anda tidak perlu mengendalikan ikatan (kes di mana berbilang item mempunyai pangkat yang sama), anda boleh menggunakan row_number dan bukannya pangkat. Kod ini kekal sama seperti di atas, dengan row_number.over(w) menggantikan rank.over(w) dalam ungkapan withColumn.

Dengan memanfaatkan teknik pengumpulan dan windowing ini, anda boleh mencari N item teratas dengan cekap dalam setiap kumpulan dalam Spark DataFrame anda, membolehkan anda mengekstrak cerapan berharga daripada data anda dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Item N Teratas setiap Kumpulan dalam Spark DataFrame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn