저는 스칼라와 스파크를 처음 접했고 야구 통계를 사용하여 자체 제작 한 운동을하고 있습니다. 사례 클래스를 사용하여 RDD를 만들고 데이터에 스키마를 할당 한 다음이를 DataFrame으로 전환하여 SparkSQL을 사용하여 특정 기준에 맞는 통계를 통해 선수 그룹을 선택할 수 있습니다.
더 자세히보고 싶은 플레이어의 하위 집합이 있으면 열의 평균을 찾고 싶습니다. 예를 들어 타격 평균 또는 RBI. 거기에서 나는 모든 플레이어와 비교 한 평균 성능을 기준으로 모든 플레이어를 백분위 수 그룹으로 나누고 싶습니다. 상위 10 %, 하위 10 %, 40-50 %
DataFrame.describe () 함수를 사용하여 원하는 열 (평균, stddev, count, min 및 max)의 요약을 모두 문자열로 반환 할 수있었습니다. 평균과 표준을 Doubles로 얻는 더 좋은 방법이 있습니까? 그리고 플레이어를 10- 백분위 수 그룹으로 나누는 가장 좋은 방법은 무엇입니까?
지금까지는 백분위 수 범위를 북 엔드하고 비교기를 통해 플레이어를 그룹화하는 기능을 작성하는 값을 찾는 것이지만 바퀴를 재발견하는 데 경계가 있다고 생각합니다.
현재 다음과 같은 수입품이 있습니다.
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
import org.joda.time.format.DateTimeFormat
not found: value avg
과not found: value max
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
import org.joda.time.format.DateTimeFormat
org.apache.spark.sql.functions._
. (BTW .: 추가 정보가 질문 자체에 더 잘 추가되고 편집 후에 주석을 추가하기에 충분하다고 생각합니다.)
.agg(avg(people("salary")), max(people("age")))
있습니다. 정렬을 사용 하면 백분위 수 를 찾고 (사용skip
하고take
) 사용할 수 있지만 더 빠른 옵션이있을 수 있습니다.