使用对象的CombineByKey的Spark Shell?

时间:2018-10-04 10:56:15

标签: scala apache-spark hadoop average

我创建了一个简单的数据集,找到了average。找到了将tuplecombineByKey选项一起使用的方法。最终结果集如下(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)))

使用tuplecombineByKey选项可以找到FWA,SMX等的平均值。

我尝试过使用对象。创建的对象fd具有两个字段namedelay

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选项?由于它不是keyvalue对。

请为我建议如何找到average的方法?在哪里可以找到一些用于学习的高级Spark编程?

0 个答案:

没有答案