比方说,我有一个简单的案例类
case class Foo(k:String, v1:String, v2:String)
Run Code Online (Sandbox Code Playgroud)
为了这样的目的,我可以获得火花来识别这个元组,而不是转换为元组,例如地图或keyBy步骤.
val rdd = sc.parallelize(List(Foo("k", "v1", "v2")))
// Swap values
rdd.mapValues(v => (v._2, v._1))
Run Code Online (Sandbox Code Playgroud)
在这样的操作之后,我甚至不关心它是否会失去原来的案例类.我试过以下没有运气.我对Scala很新,我错过了什么吗?
case class Foo(k:String, v1:String, v2:String)
extends Tuple2[String, (String, String)](k, (v1, v2))
Run Code Online (Sandbox Code Playgroud)
编辑:在上面的代码片段中,case类扩展了Tuple2,这不会产生RDD类和函数不像元组那样对待并允许PairRDDFunctions,例如mapValues,values,reduceByKey等所需的效果.