[SCALA] 스파크 DataFrame를 사용하여 그룹 후 모든 그룹의을 TopN를 얻을 수
SCALA스파크 DataFrame를 사용하여 그룹 후 모든 그룹의을 TopN를 얻을 수
나는 스파크 SQL의 DataFrame 있습니다 :
user1 item1 rating1
user1 item2 rating2
user1 item3 rating3
user2 item1 rating4
...
어떻게 그룹에 사용자가 다음 스칼라를 사용하여 모든 그룹에서을 TopN 항목을 반환?
파이썬을 사용하여 유사성 코드 :
df.groupby("user").apply(the_func_get_TopN)
해결법
-
==============================
1.다음과 같이 순위 창 기능을 사용할 수 있습니다
다음과 같이 순위 창 기능을 사용할 수 있습니다
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)
당신이 관계에 대한 상관 없어 경우에 당신은 ROW_NUMBER와 순위를 바꿀 수 있습니다
from https://stackoverflow.com/questions/33655467/get-topn-of-all-groups-after-group-by-using-spark-dataframe by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 속도를 컴파일 대 속도를 컴파일 자바 (0) | 2019.11.05 |
---|---|
[SCALA] 스칼라에서, 할당 연산자 "="메소드 호출은? (0) | 2019.11.05 |
[SCALA] 스파크에서 DataFrame 평가를 강제하는 방법 (0) | 2019.11.05 |
[SCALA] 때 스칼라 중위 표기법에 괄호를 사용하는 (0) | 2019.11.05 |
[SCALA] 삽입 순서 스칼라지도 구현 유지 항목? (0) | 2019.11.05 |