Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyimpan Lajur Bukan Agregat Selepas Spark DataFrame GroupBy?
Cara Mengekalkan Lajur Bukan Agregat dalam Spark DataFrame GroupBy
Apabila mengagregatkan data menggunakan kaedah DataFrame groupBy, DataFrame yang terhasil hanya mengandungi kumpulan -oleh kunci dan nilai agregat. Walau bagaimanapun, dalam beberapa kes, adalah wajar untuk turut memasukkan lajur bukan agregat daripada DataFrame asal dalam hasilnya.
Penghadan Spark SQL
Spark SQL mengikuti konvensyen SQL pra-1999, yang tidak membenarkan lajur tambahan dalam pertanyaan pengagregatan. Pengagregatan seperti kiraan menghasilkan hasil yang tidak ditakrifkan dengan baik apabila digunakan pada berbilang lajur, jadi sistem berbeza yang mengendalikan pertanyaan sedemikian mempamerkan gelagat yang berbeza-beza.
Penyelesaian:
Untuk mengekalkan bukan -lajur agregat dalam kumpulan Spark DataFrameBy, terdapat beberapa pilihan:
val aggregatedDf = df.groupBy(df("age")).agg(Map("id" -> "count")) val joinedDf = aggregatedDf.join(df, Seq("age"), "left")
import org.apache.spark.sql.expressions.Window val windowSpec = Window.partitionBy(df("age")) val aggregatedDf = df.withColumn("name", first(df("name")).over(windowSpec)) .groupBy(df("age")).agg(Map("id" -> "count"))
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Lajur Bukan Agregat Selepas Spark DataFrame GroupBy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!