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
Mary-Kate Olsenasal
2024-12-31 13:00:12792semak imbas

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))

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()

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!

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