美文网首页
RDD、DataFrame、Dataset

RDD、DataFrame、Dataset

作者: 麦子星星 | 来源:发表于2019-02-26 13:56 被阅读0次

    RDD、DataFrame、Dataset三者有许多共性,有各自适用的场景常常需要在三者之间转换

    DataFrame/Dataset转RDD:

    这个转换很简单

    val rdd1=testDF.rdd

    val rdd2=testDS.rdd

    RDD转DataFrame:

    import spark.implicits._

    val testDF = rdd.map {line=>

          (line._1,line._2)

        }.toDF("col1","col2")

    一般用元组把一行的数据写在一起,然后在toDF中指定字段名

    RDD转Dataset:

    import spark.implicits._

    case class Coltest(col1:String,col2:Int)extends Serializable //定义字段名和类型

    val testDS = rdd.map {line=>

          Coltest(line._1,line._2)

        }.toDS

    可以注意到,定义每一行的类型(case class)时,已经给出了字段名和类型,后面只要往case class里面添加值即可

    Dataset转DataFrame:

    这个也很简单,因为只是把case class封装成Row

    import spark.implicits._

    val testDF = testDS.toDF

    DataFrame转Dataset:

    import spark.implicits._

    case class Coltest(col1:String,col2:Int)extends Serializable //定义字段名和类型

    val testDS = testDF.as[Coltest]

    这种方法就是在给出每一列的类型后,使用as方法,转成Dataset,这在数据类型是DataFrame又需要针对各个字段处理时极为方便

    相关文章

      网友评论

          本文标题:RDD、DataFrame、Dataset

          本文链接:https://www.haomeiwen.com/subject/qdeayqtx.html