【发布时间】:2019-07-08 06:38:54
【问题描述】:
我想将 Pair RDD "myRDD" 值从 Iterable[(Double,Double)] 转换为 Seq(Seq(Double)),但是我不知道该怎么做。我尝试了以下但它不起作用。
val groupedrdd: RDD[BB,Iterable[(Double,Double)]] = RDDofPoints.groupByKey()
val RDDofSeq = groupedrdd.mapValues{case (x,y) => Seq(x,y)}
myRDD 是使用 RddofPoints 上的 groupByKey 操作形成的,它们各自的边界框作为键。 BB 是一个案例类,它是类型为 (Double,Double) 的一组点的键。我希望 RDDofSeq 的类型为 RDD[BB,Seq(Seq(Double))],但是在 groupByKey 之后,myRDD 的类型为 RDD[BB,Iterable[(Double,Double)]]。
这里会报错:
Error:(107, 58) constructor cannot be instantiated to expected type;
found : (T1, T2)
required: Iterable[(Double, Double)]
我是 Scala 新手,感谢您提供这方面的任何帮助。谢谢。
ANSWER:以下内容用于实现上述目标:
val RDDofSeq = groupedrdd.mapValues{iterable => iterable.toSeq.map{case (x,y) => Seq(x,y)}}
【问题讨论】: