spark- rdd、dataset和dataframe的互操作(Interoperating)

最近写spark代码的时候总是把rdd转dataset或者dataframe,再此将转换的途径总结一下

rdd转dataset

第一种,使用隐式函数toDF

import spark.implicits._ //spark是你实例化的sparksession,

rdd1.toDF()/或者 toDF("a","b","c")  //a b c分别表示列名

note: 如果rdd[Row]是不能成功转化的,toDF的代码是在DatasetHolder

第二种,使用javabean

case class person(name:String,age:Int,sex:String)
spark.createDataFrame(rdd,classOf[person])

第三种,使用row

val re1= re.map(
         x=>{
          Row(x._1,x._2,x._3)
         }
       )
       val typesname=StructType(
           StructField("name", LongType, true) ::
           StructField("age", DoubleType, false) ::
           StructField("sex", StringType, false)::Nil
       )
  spark.createDataFrame(re1,typesname)

note: RDD[_],_必须是spark.sql.Row类型。

第二种和第三种都是使用createDataFrame函数进行转化。

dataset转rdd

spark.rdd

你可能感兴趣的:(大数据-计算框架-spark)