刚才开始看SparkSql,把看过程中的了解的东西行记下来
1,关于类型方面:
- DataSet是带有类型的(typed),例:
DataSet<Persono>
。取得每条数据某个值时,使用类似person.getName()
这样的API,可以保证类型安全。 - 而DataFrame是无类型的,是以列名来作处理的,所以它的定义为
DataSet<Row>
。取得每条数据某个值时,可能要使用row.getString(0)
或col("department")
这样的方式来取得,无法知道某个值的具体的数据类型。
2,关于schema。DataFrame带有schema,而DataSet没有schema。schema定义了每行数据的“数据结构”,就像关系型数据库中的“列”,schema指定了某个DataFrame有多少列。
参考:
Spark RDD、DataFrame和DataSet的区别
Spark SQL, DataFrames and Datasets Guide
Class Dataset API