DataFrame RDD DataSet

一、基本概念

DataFrame它不是Spark SQL提出的,而是早起在R、Pandas语言就已经有了的。

Dataset: A Dataset is a distributed collection of data:分布式的数据集

DataFrame: A DataFrame is a Dataset organized into named columns. 以列(列名、列的类型、列值)的形式构成的分布式数据集,按照列赋予不同的名称

RDD: 弹性分布式数据集 RDD + schema = dataframe  RDD套上 schema(表的结构信息)就是 dataframe,它们都是数据集,dataframe更像是一张表

RDD 是一列数据,而dataframe是多列数据,更像是一个数据库表,可以理解为关系型数据库的一张表,而且可以直接理解为python中的同名概念

DataFrame是spark1.3.0版本提出来的(1.3.0以前叫SchemaRDD),spark1.6.0版本又引入了DataSet的,但是在spark2.0版本中,DataFrame和DataSet合并为DataSet

DataFrame = Dataset[Row] ,在 the Scala API中, DataFrame 仅仅是一个 Dataset[Row]类型的别名

Dataset:强类型 typed case class          DataFrame:弱类型 Row

DataFrame和DataSet是基于RDDs的,而且这三者之间可以通过简单的API调用进行无缝切换

二、运行环境

RDD: java/scala ==> jvm

            python ==> python runtime

DataFrame: java/scala/python ==> Logic Plan(逻辑执行计划,不管什么语言效果都一样)

三、DataFrame和RDD互操作的两种方式:

1)反射:case class 前提:事先需要知道你的字段、字段类型

2)编程:Row 如果第一种情况不能满足你的要求(事先不知道列的属性)

3)  选型:优先考虑第一种

猜你喜欢

转载自blog.csdn.net/q503385724/article/details/88300092
今日推荐