小编Mar*_*all的帖子

如何在rdd中放置一个case类并让它像一个元组(对)?

比方说,我有一个简单的案例类

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等所需的效果.

scala tuples apache-spark rdd

9
推荐指数
1
解决办法
7639
查看次数

标签 统计

apache-spark ×1

rdd ×1

scala ×1

tuples ×1