SparkSql:数据抽象(DataFrame与DataSet详解)

DataFrame

  • 什么是DataFrame
    DataFrame是一种以RDD为基础的带有Schema元信息的分布式数据集,类似于传统数据库的二维表格 。
    SparkSql:数据抽象(DataFrame与DataSet详解)

DataSet

  • 什么是DataSet
    DataSet是保存了更多的描述信息,类型信息的分布式数据集。
    与RDD相比,保存了更多的描述信息,概念上等同于关系型数据库中的二维表。
    与DataFrame相比,保存了类型信息,是强类型的,提供了编译时类型检查,
    调用Dataset的方法先会生成逻辑计划,然后被spark的优化器进行优化,最终生成物理计划,然后提交到集群中运行!
    SparkSql:数据抽象(DataFrame与DataSet详解)

DataSet包含了DataFrame的功能,
Spark2.0中两者统一,DataFrame表示为DataSet[Row],即DataSet的子集。
DataFrame其实就是Dateset[Row]
SparkSql:数据抽象(DataFrame与DataSet详解)

RDD、DataFrame、DataSet的区别

  • 结构图解
    SparkSql:数据抽象(DataFrame与DataSet详解)
    RDD[Person]
    以Person为类型参数,但不了解 其内部结构。

DataFrame
提供了详细的结构信息schema列的名称和类型。这样看起来就像一张表了


DataSet[Person]
不光有schema信息,还有类型信息