Tôi rất mới với Scala và Spark, và đang thực hiện một số bài tập tự tạo bằng cách sử dụng số liệu thống kê bóng chày. Tôi đang sử dụng lớp trường hợp tạo RDD và gán lược đồ cho dữ liệu và sau đó biến nó thành DataFrame để tôi có thể sử dụng SparkQuery để chọn các nhóm người chơi thông qua các số liệu thống kê đáp ứng các tiêu chí nhất định.
Khi tôi có tập hợp các cầu thủ mà tôi quan tâm để tìm hiểu thêm, tôi muốn tìm giá trị trung bình của một cột; ví dụ: Batted Average hoặc RBIs. Từ đó tôi muốn chia tất cả người chơi thành các nhóm phần trăm dựa trên hiệu suất trung bình của họ so với tất cả người chơi; 10% hàng đầu, 10% dưới cùng, 40-50%
Tôi đã có thể sử dụng hàm DataFrame.describe () để trả về một bản tóm tắt của một cột mong muốn (trung bình, stddev, đếm, tối thiểu và tối đa) dưới dạng các chuỗi. Có cách nào tốt hơn để lấy chỉ số trung bình và stddev là Nhân đôi, và cách tốt nhất để chia người chơi thành các nhóm 10 phần trăm là gì?
Cho đến nay, suy nghĩ của tôi là tìm ra các giá trị vượt qua phạm vi phần trăm và viết một hàm phân nhóm người chơi thông qua các bộ so sánh, nhưng cảm giác như nó đang giáp với việc phát minh lại bánh xe.
Tôi có nhập khẩu sau đây:
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
và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._
quá. (BTW.: Tôi nghĩ rằng thông tin bổ sung được thêm vào câu hỏi tốt hơn và nó là đủ để thêm nhận xét sau khi chỉnh sửa.)
.agg(avg(people("salary")), max(people("age")))
. Với việc sắp xếp, bạn có thể tìm thấy (sử dụngskip
vàtake
) phần trăm, nhưng có thể có các tùy chọn nhanh hơn.