Оболочка Spark с использованием combByKey с Object? - PullRequest
0 голосов
/ 04 октября 2018

Я создал простой набор данных, найдя average.Нашел способ используя tuple с опцией combineByKey.Окончательный набор результатов, подобный этому (key,(total,no.of values))

scala> mydata.combineByKey( value => (value,1) , (acc:(Int,Int),value) => (acc._1+value,acc._2+1),(acc1:(Int,Int),acc2:(Int,Int))=>(acc1._1 + acc2._1 , acc2._2 + acc2._2))
res75: org.apache.spark.rdd.RDD[(String, (Int, Int))] = ShuffledRDD[42] at combineByKey at <console>:36

scala> res75.take(10)
res77: Array[(String, (Int, Int))] = Array((FWA,(309,1)), (SMX,(62,1)), (BMI,(91,2)), (HLN,(119,1)), (SUN,(118,1)), (HYS,(52,1)), (RIC,(1156,8)), (PSE,(72,1)), (SLC,(8699,8)), (EWN,(55,1)))

Поиск среднего значения для FWA, SMX и т. Д., Работает нормально с опциями tuple и combineByKey.

То же самое, что я пробовал с объектом.Созданный объект fd с двумя полями, name и delay.

scala> case class **fd**(name:String,delay:Int)
defined class fd
scala> **data**.take(2)
res73: Array[fd] = Array(**fd**(DFW,11956), fd(DTW,588))

В вышеупомянутом RDD, как я могу использовать опцию combineByKey?Так как это не key, а value пара.

Подскажите пожалуйста, как найти average?Где я могу найти продвинутое программирование искры для моего исследования?

...