Spark-DataSet的基本操作

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()
      
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容