Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Meniru Fungsi row_number() SQL dengan Spark RDDs untuk Data Terbahagi?

Bagaimana untuk Meniru Fungsi row_number() SQL dengan Spark RDDs untuk Data Terbahagi?

Mary-Kate Olsen
Lepaskan: 2024-12-31 13:00:12
asal
782 orang telah melayarinya

How to Replicate SQL's row_number() Functionality with Spark RDDs for Partitioned Data?

Spark RDD Equivalent of SQL Row_Number for Partitioned Data

Dalam SQL, row_number() menjana nombor berjujukan untuk baris dalam set data terbahagi. Ciri ini tidak tersedia secara langsung dalam Spark RDD. Walau bagaimanapun, terdapat penyelesaian untuk mencapai kefungsian yang serupa.

Pembahagian RDD

Pembahagian adalah penting untuk menjana nombor baris dalam kumpulan. Dalam kes anda, anda perlu membahagikan RDD dengan key_value (K) sebelum mengisih. Pertimbangkan kod yang dikemas kini:

val temp2 = temp1
  .map(x => (x._1, (x._2, x._3, x._4)))
  .sortBy(a => (a._1, -a._2._2, -a._2._3))
  .zipWithIndex
  .map(a => (a._1._1, a._1._2._1, a._1._2._2, a._1._2._3, a._2 + 1))
Salin selepas log masuk

Dengan menggunakan sortBy to (a._1, -a._2._2, -a._2._3), anda mengisih berdasarkan key_value, kemudian menuruni col2, dan akhirnya menurunkan col3, meniru tingkah laku SQL row_number().

Menambah Baris Nombor

Selepas membahagi dan mengisih, anda boleh menambah nombor baris menggunakan zipWithIndex:

val rowNums = temp2.map(a => (a._1, a._2, a._3, a._4, a._5)).cache()
Salin selepas log masuk

Nota: Pelaksanaan DataFrame yang Disediakan dalam Respons Adalah Penyelesaian untuk DataFrames, tetapi Bukan untuk RDD.

Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi row_number() SQL dengan Spark RDDs untuk Data Terbahagi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan