我创建了一个简单的数据集,找到了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)))
使用tuple
和combineByKey
选项可以找到FWA,SMX等的平均值。
我尝试过使用对象。创建的对象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
的方法?在哪里可以找到一些用于学习的高级Spark编程?