используя Spark: объединение столбца 1 и поиск среднего значения столбца 2 на основе ячеек столбца 1

Я изучаю apache spark и язык scala. Так что помогите, пожалуйста. Я получаю 3 столбца (c1, c2 и c3) от запроса cassandra и получаю его в кадре данных в коде scala. Я должен bin(размер ячейки = 3) (статистика, как на гистограмме) c1 и найдите среднее значение c2 и c3 в ячейках c1. Существуют ли какие-либо предварительно созданные функции, которые я могу использовать для этого вместо традиционных циклов for, и есть ли условия для достижения этого?


person B1K    schedule 13.04.2016    source источник
comment
Я считаю, что это будет полезно: " title="как более эффективно вычислять средние значения для каждого ключа в попарном k v"> stackoverflow.com/questions/29930110/   -  person evgenii    schedule 15.04.2016


Ответы (1)


Попробуй это

val modifiedRDD = rdd.map{case(c1, c2, c3) => ((c1), (c2, c3, 1))}
val reducedRDD = modifiedRDD.reduceByKey{case(x, y) => (x._1+y._1, x._2+y._2, x._3+y._3)}

val finalRDD = reducedRDD.map{case((c1), (totalC2, totalC3, count)) => (c1, totalC2/count, totalC3/count)}
person Abhishek Anand    schedule 14.04.2016