Я дуже новачок у Scala та Spark і працюю над деякими саморобними вправами, використовуючи статистику бейсболу. Я використовую класовий регістр, щоб створити RDD і призначити схему даним, а потім перетворюю їх у DataFrame, щоб я міг використовувати SparkSQL для вибору груп гравців за їх статистикою, що відповідають певним критеріям.
Після того, як у мене є підмножина гравців, які мені цікаво подивитися далі, я хотів би знайти середнє колонку; наприклад, середній показник ватин або RBI. Звідти я хотів би розбити всіх гравців на процентні групи, виходячи з їх середньої продуктивності порівняно з усіма гравцями; верхній 10%, нижній 10%, 40-50%
Мені вдалося використовувати функцію DataFrame.describe (), щоб повернути підсумок потрібного стовпця (середнє значення, stddev, кількість, хв і макс), все як рядки. Чи є кращий спосіб отримати просто середні і stddev як парні, і який найкращий спосіб розбити гравців на групи по 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
) відсотки, але можливі швидші варіанти.