前面已经给大家说过RDD、DataSet、DataFrame三者之间的关系以及区别,各自都有各自的优劣。RDD、DataFrame、Dataset三者有许多共性,有各自适用的场景常常需要在三者之间转换。今天就给大家说说他们直接按的无缝转换。
DataFrame/Dataset转RDD
这个转换很简单,只需要在类型的后面.rdd就可以转换成RDD。
如何创建DataFrame/Dataset的方法在前面已经说过在这里就不多说了。
val createDS = spark.createDataset(1 to 3)
val createDF = spark.createDataFrame(List( ("Scala", 35),("Python", 30), ("R", 15), ("Java", 20)) )
val rdd1=createDS.rdd
val rdd2=createDF.rdd1234
RDD转Dataset
这个属于隐式转换,需要导包才能转换,不然会报错,然后在类型的后面.toDS就可以转换成Dataset
import spark.implicits._
case class Point(label:String,x:Double,y:Double)
case class Category(id:Long,name:String)
val pointsRDD=sc.parallelize(List(("bar",3.0,5.6),("foo",-1.0,