Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menyimpan Lajur Lain Apabila Menghimpun dalam Spark DataFrame?

Bagaimanakah Saya Boleh Menyimpan Lajur Lain Apabila Menghimpun dalam Spark DataFrame?

Barbara Streisand
Lepaskan: 2024-12-21 01:01:09
asal
476 orang telah melayarinya

How Can I Keep Other Columns When Grouping in a Spark DataFrame?

Memelihara Lajur Lain Apabila Menghimpun dalam Spark DataFrame

Apabila melakukan operasi DataFrame mengikut kumpulan, adalah perkara biasa untuk menghadapi isu hanya menerima kumpulan lajur dan nilai agregat. Ini boleh menyusahkan jika anda perlu mengekalkan lajur lain daripada DataFrame asal.

Sebagai contoh, pertimbangkan kumpulan berikut:

df.groupBy(df("age")).agg(Map("id" -> "count"))
Salin selepas log masuk

Ini akan mengembalikan DataFrame yang mengandungi hanya "umur" dan lajur "count(id)". Walau bagaimanapun, jika "nama" dan lajur lain wujud dalam DataFrame asal, anda mungkin mahu memasukkannya ke dalam hasilnya.

Dalam SQL standard, ini boleh dicapai menggunakan pertanyaan berikut:

select name, age, count(id) from df group by age
Salin selepas log masuk

Untuk meniru tingkah laku ini dalam Spark, anda boleh menyertai hasil agregat dengan jadual asal. Lajur utama untuk gabungan hendaklah sama dengan lajur kumpulan mengikut.

Berikut ialah contoh menggunakan Spark SQL:

val groupedDf = df.groupBy($"age").agg(count($"id").as("count"))
val joinedDf = df.join(groupedDf, Seq("age"), "left")
Salin selepas log masuk

Df joined kini akan mengandungi semua lajur asal bersama-sama lajur "kiraan" teragregat.

Pendekatan lain ialah menggunakan agregat sewenang-wenangnya seperti pertama atau terakhir untuk memasukkan tambahan lajur. Contohnya:

val groupedDf = df.groupBy($"age").agg(first($"name").as("name"), count($"id").as("count"))
Salin selepas log masuk

Ini akan memastikan bahawa lajur "nama" dikekalkan dalam DataFrame terkumpul.

Walaupun kaedah ini membenarkan anda mendapatkan semula lajur lain semasa pengumpulan, adalah penting untuk ambil perhatian bahawa pertanyaan sedemikian secara amnya tidak ditakrifkan dengan baik dan mungkin menunjukkan kelakuan yang berbeza-beza merentas sistem yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyimpan Lajur Lain Apabila Menghimpun dalam Spark DataFrame?. 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