spark 中的 dataframe 和 dataset

sparkSQL 中的两种数据类型

Posted by 果然 on May 26, 2022

Spark SQL概述

是一种用于结构化数据处理的spark组件。所谓结构化数据,是指具有schema信息的数据。

Spark SQL主要特点

-1. 将SQL查询与spark应用程序无缝组合
-2. Spark SQL以相同方式连接多种数据源
-3. 在现有数据仓库上运行SQL或HiveQL查询

DataFrame

是 Spark SQL 提供的一个编程抽象,也是一个分布式的数据集合。dataframe 在RDD的基础上添加了数据描述信息(Schema,即元信息),因此看起来更像是一张数据库表。

DataSet

是一个分布式数据集。相对于RDD,DataSet 提供了强类型支持,在RDD的每行数据加了类型约束。

**使用DataFrame API和Dataset API 均可以经过 Spark SQL优化器的优化,从而提高程序执行效率。**

sparkSession.read.textFile 和 read.json

val df = sparksession.read.json("xxx\\people.json")

df 数据类型:DataFrame

val df1 = sparksession.read.textFile("xxx\\people.txt")

df1 数据类型:DataSet

row dataframe dataset 间的相互转化

Row --> DataFrame        .toDF
Row --> DataSet          .toDS
DataFrame --> DataSet    .as[Subject]
DataSet --> DataFrame    .toDF
DataFrame --> Row        .rdd
DataSet --> Row          .rdd