Dataset和DataFrame的区别

  • Dataset 和 DataFrame 的区别

    • DataFrame 就是 Dataset

      根据前面的内容, 可以得到如下信息

      • Dataset 中可以使用列来访问数据, DataFrame 也可以
      • Dataset 的执行是优化的, DataFrame 也是
      • Dataset 具有命令式 API, 同时也可以使用 SQL 来访问, DataFrame 也可以使用这两种不同的方式访问

      所以这件事就比较蹊跷了, 两个这么相近的东西为什么会同时出现在 SparkSQL 中呢?

      在这里插入图片描述

      确实, 这两个组件是同一个东西, DataFrame 是 Dataset 的一种特殊情况, 也就是说 DataFrame 是 Dataset[Row] 的别名

    • DataFrame 和 Dataset 所表达的语义不同

      • 第一点: DataFrame 表达的含义是一个支持函数式操作的 表, 而 Dataset 表达是是一个类似 RDD 的东西, Dataset 可以处理任何对象
      • 第二点: DataFrame 中所存放的是 Row 对象, 而 Dataset 中可以存放任何类型的对象
      @Test
        def dataframe3():Unit = {
             
          val spark = SparkSession.builder()
            .master("local[6]")
            .appName("dataframe3")
            .getOrCreate()
      
          import spark.implicits._
      
          val personList = Seq(Person("zhangsan", 15), Person("lisi", 20))
      
          // DataFrame 是弱类型的
          val df:DataFrame = personList.toDF()
          // Dataset 是强类型
          val ds:Dataset[Person] = personList.toDS()
        }
      
      case class Person(name: String, age
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值