[SCALA] 매개 변수 값 스칼라 - 스파크 동적으로 호출 GROUPBY 및 AGG
SCALA매개 변수 값 스칼라 - 스파크 동적으로 호출 GROUPBY 및 AGG
나는 열 이름을 알고 집계 앞을 매핑되지 않는 map.I 집계 지정된 사용자 지정 열 이름과 사용자가 얻을 수있는 사용자 정의 그룹화 및 집계 함수를 작성합니다. 나는 다음과 같은 유사한 함수를 작성합니다. 하지만 난 스칼라에 새로운 오전 나는 그것을 해결할 수 없습니다.
def groupAndAggregate(df: DataFrame, aggregateFun: Map[String, String], cols: List[String] ): DataFrame ={
val grouped = df.groupBy(cols)
val aggregated = grouped.agg(aggregateFun)
aggregated.show()
}
과 같이 호출 할
val listOfStrings = List("A", "B", "C")
val result = groupAndAggregate(df, Map("D"-> "SUM", "E"-> "COUNT"), listOfStrings)
나는이 어떻게 할 수 있습니까? 나를 기쁘게 사람의 도움을 할 수 있습니다.
해결법
-
==============================
1.두 가지 문제 - 코드는 거의 정확
두 가지 문제 - 코드는 거의 정확
전부, 당신의 기능은 다음과 같습니다
def groupAndAggregate(df: DataFrame, aggregateFun: Map[String, String], cols: List[String] ): DataFrame ={ val grouped = df.groupBy(cols.head, cols.tail: _*) val aggregated = grouped.agg(aggregateFun) aggregated }
또는 유사한 짧은 버전 :
def groupAndAggregate(df: DataFrame, aggregateFun: Map[String, String], cols: List[String] ): DataFrame = { df.groupBy(cols.head, cols.tail: _*).agg(aggregateFun) }
당신은 당신의 함수 내에서 쇼를 호출 할 경우 :
def groupAndAggregate(df: DataFrame, aggregateFun: Map[String, String], cols: List[String] ): DataFrame ={ val grouped = df.groupBy(cols.head, cols.tail: _*) val aggregated = grouped.agg(aggregateFun) aggregated.show() aggregated }
from https://stackoverflow.com/questions/36307867/scala-spark-dynamically-call-groupby-and-agg-with-parameter-values by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스파크 열 문자열 다른 열 (행)에 존재하는 경우 대체 (0) | 2019.11.18 |
---|---|
[SCALA] 스칼라 단일 메소드 인터페이스 구현 (0) | 2019.11.17 |
[SCALA] Scalaz 귀속 [서열] typeclass (0) | 2019.11.17 |
[SCALA] 스칼라에서 자바 람다를 사용하는 방법 (0) | 2019.11.17 |
[SCALA] 어떻게 ML 알고리즘에 대한 DataFrame 열을 벡터화? (0) | 2019.11.17 |