ホームページ > データベース > mysql チュートリアル > Spark DataFrame でグループ化するときに他の列を保持するにはどうすればよいですか?

Spark DataFrame でグループ化するときに他の列を保持するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-21 01:01:09
オリジナル
476 人が閲覧しました

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

Spark DataFrame でグループ化するときに他の列を保持する

DataFrame の groupby 操作を実行すると、グループ化された列のみを受信するという問題がよく発生します。列と集計値。元の DataFrame の他の列を保持する必要がある場合、これは不便な場合があります。

たとえば、次の groupby を考えてみましょう:

df.groupBy(df("age")).agg(Map("id" -> "count"))
ログイン後にコピー

これは、「年齢」のみを含む DataFrame を返します。および「count(id)」列。ただし、元の DataFrame に「name」およびその他の列が存在する場合は、それらを結果に含めることができます。

標準 SQL では、これは次のクエリを使用して実現できます:

select name, age, count(id) from df group by age
ログイン後にコピー

Spark でこの動作を再現するには、集計結果を元のテーブルと結合します。結合のキー列は、groupby 列と同じである必要があります。

Spark SQL を使用した例を次に示します。

val groupedDf = df.groupBy($"age").agg(count($"id").as("count"))
val joinedDf = df.join(groupedDf, Seq("age"), "left")
ログイン後にコピー

joinedDf には、すべての元の列と集計された "count" 列。

別のアプローチは、first や last などの任意の集計を使用して追加の列を含めることです。例:

val groupedDf = df.groupBy($"age").agg(first($"name").as("name"), count($"id").as("count"))
ログイン後にコピー

これにより、「name」列が集約された DataFrame に確実に保持されます。

これらのメソッドを使用すると、グループ化中に他の列を取得できますが、注意することが重要です。このようなクエリは一般に明確に定義されておらず、システムごとに異なる動作を示す可能性があります。

以上がSpark DataFrame でグループ化するときに他の列を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート