집 >데이터 베이스 >MySQL 튜토리얼 >Spark DataFrame에서 그룹당 상위 N개 항목을 효율적으로 찾는 방법은 무엇입니까?
소개:
Spark DataFrame은 데이터 조작 및 집계를 위한 강력한 기능을 제공합니다. 특정 열을 기준으로 데이터를 그룹화한 다음 각 그룹 내에서 상위 N 값 찾기 등의 작업을 수행하는 것은 데이터 처리의 일반적인 요구 사항입니다.
문제 설명:
사용자, 항목, 평가와 같은 열이 있는 Spark DataFrame입니다. 작업은 데이터를 사용자별로 그룹화하고 각 그룹에서 상위 N개 항목을 반환하는 것입니다. 여기서 N은 미리 정의된 숫자입니다.
해결책:
사용 창 기능:
Scala 코드:
import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions.{rank, desc} val n: Int = ??? // Window definition val w = Window.partitionBy($"user").orderBy(desc("rating")) // Filter df.withColumn("rank", rank.over(w)).where($"rank" <= n)
설명:
이 코드는 창 기능을 활용하여 등급 열을 기준으로 각 사용자 그룹 내 항목의 순위를 내림차순으로 지정합니다. 순위 함수는 파티션 내의 각 행에 순위를 할당하여 정렬된 목록에서의 위치를 나타냅니다. 순위 <= n으로 필터링하면 각 그룹의 상위 N개 항목만 유지됩니다.
row_number 함수 사용:
처리할 필요가 없는 경우 동점(여러 항목의 순위가 동일한 경우)인 경우 순위 대신 row_number를 사용할 수 있습니다. 코드는 withColumn 표현식의 Rank.over(w)를 row_number.over(w)로 대체하여 위와 유사하게 유지됩니다.
이러한 그룹화 및 창 지정 기술을 활용하면 내에서 상위 N개 항목을 효율적으로 찾을 수 있습니다. Spark DataFrame의 각 그룹을 통해 데이터에서 귀중한 통찰력을 효과적으로 추출할 수 있습니다.
위 내용은 Spark DataFrame에서 그룹당 상위 N개 항목을 효율적으로 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!