Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meniru Fungsi row_number() SQL dalam Spark Menggunakan RDD?
Mendapatkan SQL Row_Number Equivalent untuk Spark RDD
Dalam SQL, fungsi row_number() membenarkan penjanaan nombor baris yang unik untuk setiap baris dalam jadual yang terbahagi dan tersusun. Kefungsian ini boleh direplikasi dalam Spark menggunakan RDD dan artikel ini menggariskan cara untuk mencapainya.
Pertimbangkan RDD dengan skema (K, V), dengan V mewakili tuple (col1, col2, col3). Matlamatnya adalah untuk mendapatkan RDD baharu dengan lajur tambahan yang mewakili nombor baris bagi setiap tupel, disusun oleh partition pada kekunci K.
Percubaan Pertama
Satu biasa pendekatan adalah untuk mengumpul RDD dan menyusunnya menggunakan fungsi seperti sortBy(), sortWith(), atau sortByKey(). Walau bagaimanapun, kaedah ini tidak mengekalkan aspek pembahagian fungsi row_number().
Pemesanan Sedar Pembahagian
Untuk mencapai nombor baris terbahagi, anda boleh memanfaatkan fungsi Tetingkap dalam Spark. Walau bagaimanapun, fungsi Window direka terutamanya untuk digunakan dengan DataFrames, bukan RDD.
Menggunakan DataFrames
Nasib baik, dalam Spark 1.4 dan seterusnya, kefungsian row_number() tersedia untuk DataFrames . Mengikuti contoh ini:
# Create a test DataFrame testDF = sc.parallelize( (Row(k="key1", v=(1,2,3)), Row(k="key1", v=(1,4,7)), Row(k="key1", v=(2,2,3)), Row(k="key2", v=(5,5,5)), Row(k="key2", v=(5,5,9)), Row(k="key2", v=(7,5,5)) ) ).toDF() # Add the partitioned row number (testDF .select("k", "v", F.rowNumber() .over(Window .partitionBy("k") .orderBy("k") ) .alias("rowNum") ) .show() )
Ini akan menjana DataFrame dengan nombor baris yang dipisahkan.
Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi row_number() SQL dalam Spark Menggunakan RDD?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!