ホームページ > データベース > mysql チュートリアル > GroupBy 操作の後に Spark DataFrame に追加の列を含めるにはどうすればよいですか?

GroupBy 操作の後に Spark DataFrame に追加の列を含めるにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-30 10:29:08
オリジナル
478 人が閲覧しました

How Can I Include Additional Columns in My Spark DataFrame After a GroupBy Operation?

Spark DataFrame GroupBy で追加の列を取得する別の方法

Spark DataFrame で groupBy 操作を実行すると、次の問題が発生する可能性があります。グループ化列と集計関数の結果を取得し、元の列から他の列を除外します。 DataFrame.

これに対処するには、次の 2 つの主なアプローチを検討できます:

  1. 集計結果と元のテーブルの結合:

Spark SQL は SQL:1999 より前の規則に準拠しており、集計に追加の列を含めることを禁止しています。クエリ。したがって、必要なデータを集約して、元の DataFrame に結合し直すことができます。これは、以下に示すように、selectExpr メソッドと join メソッドを使用して実現できます。

// Aggregate the data
val aggDF = df.groupBy(df("age")).agg(Map("id" -> "count"))

// Rename the aggregate function's result column for clarity
val renamedAggDF = aggDF.withColumnRenamed("count(id)", "id_count")

// Join the aggregated results with the original DataFrame
val joinedDF = df.join(renamedAggDF, df("age") === renamedAggDF("age"))
ログイン後にコピー
  1. ウィンドウ関数の使用:

または、次のこともできます。ウィンドウ関数を利用して追加の列を計算し、それらをグループ化された DataFrame 内に保存します。この方法では主に、グループ化列にウィンドウ フレームを定義し、集計関数を適用して目的のデータを取得します。

// Get the row number within each age group
val window = Window.partitionBy(df("age")).orderBy(df("age"))

// Use the window function to calculate the cumulative count of ids
val dfWithWindow = df.withColumn("id_count", count("id").over(window))
ログイン後にコピー

これらの手法を採用すると、必要な追加の列を取得しながら、必要な列を取得できるようになります。 Spark DataFrame で groupBy 操作を実行します。

以上がGroupBy 操作の後に Spark DataFrame に追加の列を含めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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