美文网首页
Spark-DataSet的基本操作

Spark-DataSet的基本操作

作者: 布莱安托 | 来源:发表于2020-07-07 14:47 被阅读0次

DataSet是具有强类型的数据集合,需要提供对应的类型信息。

创建

  1. 创建一个样例类

    case class Person(name: String, age: Long)
    
  2. 创建DataSet

    val personDs = Seq(Person("adam"), 20).toDS
    personDs.show
    /*
    +----+---+
    |name|age|
    +----+---+
    |adam| 20|
    +----+---+
    */
    

RDD转换为DataSet

SparkSQL能够自动将包含有样例类的RDD转换成为DataFrame,样例类定义了表的结构,样例类属性通过反射形成了表的列。

  1. 创建一个RDD

    val rdd = sc.textFile("E:\\IdeaProjects\\spark-demo\\files\\people.txt")
    
  2. 创建一个样例类

    case class Person(name: String, age: Long)
    
  3. 将RDD转换为DataSet

    val personRdd = rdd.map(x => {
        Person(x.split(",")(0), x.split(",")(1).trim.toLong)
    })
    val personDs = personRdd.toDS()
    personDs.show
    /*
    +----+---+
    |name|age|
    +----+---+
    |adam| 18|
    |brad| 21|
    |carl| 13|
    +----+---+
    */
    

DataSet转换为RDD

调用rdd方法即可

  1. 创建DataSet

    val personDs = Seq(Person("adam"), 20).toDS
    personDs.show
    /*
    +----+---+
    |name|age|
    +----+---+
    |adam| 20|
    +----+---+
    */
    
  2. 将DataSet转换为RDD

    val personRdd = personDs.rdd
    

DataFrame与DataSet的互相操作

  1. DataFrame转换为DataSet

    1. 创建一个DataFrame

      val df = spark.read.json("E:\\IdeaProjects\\spark-demo\\files\\test.json")
      
    2. 创建一个样例类

      case class Person(id: Long, name: String, age: Long)
      
    3. 将DataFrame转换为DataSet

      val ds = df.as[Person]
      
  2. DataSet转换为DataFrame

    1. 创建一个样例类

      case class Person(id: Long, name: String, age: Long)
      
    2. 创建一个DataSet

      val personDs = Seq(Person(1, "adam", 20)).toDS()
      
    3. 导入隐式转换

      import spark.implicits._
      
    4. 将DataSet转换为DataFrame

      val personDf = personDs.toDF()
      

相关文章

网友评论

      本文标题:Spark-DataSet的基本操作

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