>데이터 베이스 >MySQL 튜토리얼 >Spark DataFrame GroupBy 이후에 집계되지 않은 열을 유지하는 방법은 무엇입니까?

Spark DataFrame GroupBy 이후에 집계되지 않은 열을 유지하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-31 14:33:11348검색

How to Keep Non-Aggregated Columns After a Spark DataFrame GroupBy?

Spark DataFrame GroupBy에서 집계되지 않은 열을 보존하는 방법

DataFrame의 groupBy 메서드를 사용하여 데이터를 집계할 때 결과 DataFrame에는 그룹만 포함됩니다. - 키 및 집계된 값 기준. 그러나 경우에 따라 원본 DataFrame의 집계되지 않은 열도 결과에 포함하는 것이 바람직할 수 있습니다.

Spark SQL의 제한

Spark SQL은 다음과 같습니다. 집계 쿼리에 추가 열을 허용하지 않는 1999년 이전 SQL의 규칙입니다. count와 같은 집계는 여러 열에 적용할 때 잘 정의되지 않은 결과를 생성하므로 이러한 쿼리를 처리하는 서로 다른 시스템은 다양한 동작을 나타냅니다.

해결책:

비를 유지하려면 -Spark DataFrame 그룹의 집계 열에는 여러 가지가 있습니다. 옵션:

  1. 원본 DataFrame 결합: 집계된 DataFrame을 원본 DataFrame과 결합하여 누락된 열을 추가합니다.
val aggregatedDf = df.groupBy(df("age")).agg(Map("id" -> "count"))
val joinedDf = aggregatedDf.join(df, Seq("age"), "left")
  1. 창 기능 사용: 첫 번째 또는 마지막과 같은 창 기능을 사용하여 집계 쿼리. 그러나 이 접근 방식은 특정 시나리오에서 계산 비용이 많이 들 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.