ホームページ >データベース >mysql チュートリアル >Spark DataFrame GroupBy の後に非集計列を保持するにはどうすればよいですか?
Spark DataFrame GroupBy で非集計列を保持する方法
DataFrame の groupBy メソッドを使用してデータを集計すると、結果の DataFrame にはグループのみが含まれます-キーと集計値ごと。ただし、場合によっては、元の DataFrame の非集計列も結果に含めることが望ましい場合があります。
Spark SQL の制限
Spark SQL は次のとおりです。 1999 年より前の SQL の規則では、集計クエリに列を追加することはできません。 count のような集計は、複数の列に適用すると明確に定義されていない結果を生成するため、このようなクエリを処理するシステムによって動作が異なります。
解決策:
非を保持するには-Spark DataFrame groupBy 内の集計列。いくつかあります。オプション:
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"))
以上がSpark DataFrame GroupBy の後に非集計列を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。