DataFrame 介绍_ DataFrame 是什么 | 学习笔记

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 快速学习 DataFrame 介绍_ DataFrame 是什么

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶DataFrame 介绍_ DataFrame 是什么】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/690/detail/12045


DataFrame 介绍_ DataFrame 是什么

 

内容介绍

一、DataFrame 是什么

二、总结

 

之前介绍了 Dataset 的特点,而在 SparkSQL 中有 Dataset 和 DataFrame 两个重要的 API 。两者负责不同的语义,既可以执行 SQL 又可以执行强类型的 API ,这两者是 SparkSQL 的编程模型。本章主要介绍 DataFrame ,知道 DataFrame 是什么,用来做什么,同时它表达的语义是什么意思。


一、DataFrame是什么

要介绍 DataFrame 的特点首先要知道 DataFrame 是什么。

DataFrame 是 SparkSQL 中一个表示关系型数据库中表的函数式抽象,其作用是让 Spark 处理大规模结构化数据的时候更加容易。

一般 DataFrame 可以处理结构化的数据,或者是半结构化的数据,因为这两类数据中都可以获取到 Schema 信息也就是说 DataFrame 中有 Schema 信息,可以像操作表一样操作 DataFrame

1.RDD 和 DataFrame 的区别

下图是为了告诉我们,RDD 和 DataFrame 是有区别的,RDD 存储一个对象就是存储一个对象,根本不知道存储的具体内容是什么,即 RDD 存储的 Person 对象,并不知道其中有什么字段和类型,所以 RDD 对所有的数据都是一视同仁,而DataFrame 中是有结构信息的。

6e901609c4d96c3f4c19c8db051fa51.png

DataFrame 由两部分构成,一是 row 的集合,每个 row 对象表示一个行,二是描述 DataFrame 结构的 Schema。

DataFrame 会将整个 DataFrame 数据集给表示为行和列,两部分,同时列又有类型。

如下图:

114399ad5eb9690d47f713667f3fac4.png

可以看出 DataFrame 十分类似于关系型数据库的一张表,DataFrame 其实是 Spark 从 Python 中去借过来的一个概念,而这个 DataFrame 就是代表了一个简单的数据集合,简而言之 DataFrame 就是一张表,对其进行操作就类似于对关系型数据库的表进行操作。

2.DataFrame 支持的操作

DataFrame 支持 sQL 中常见的操作,例如: select , filter , join ,group, sort,join 等。

首先打开 IDEA,创建一个新的方法,同时要注意仍要创建一个 SparkSession。1.首先在 dataframe 中创建 SparkSession。2.创建 DataFrame。

3.DataFrame 用法。

l 代码如下:

@Test

def dataframe1(): unit = {

// 1.创建 Sparksession

val spark = Sparksession.builder()//不用采取 new 的方式,直接通过 bulider()方法即可。

//设置参数,appName 命名为 dataframe1,同时设置6个线程

.appName( name = "dataframe1" )

.master( master ="local[6]")

.getorCreate()

//以上是标准构建者模式的写法

//2.创建 DataFrame,先导入 spark.implicits

Seq 是一个集合,创建两个对象,一个是 zhangsan,15岁;一个 lisi,20岁,最后在Seq 这个集合后.toDF(),就可以成功创建一个 DataFrame。其中的 toDF()来自implicits,implicits 当中就是为 Seq 这样的基础集合做了一个映射转换。最后也可以将 annotation 把类型给加出来。

import spark.implicits._

val dataFrame:DataFrame = Seq(Person("zhangsan",15),Person("lisi",20)).toDF()

//3.DataFrame 可以先编写一条 sql 语句

select name from t where t.age >10意为查询t表中字段 age 的值大于10的数据。因为 DataFrame 与 SQL 十分相似,都是用于操作关系型表的,所以就可以使用DataFrame 完成以上 sql 语句操作。

dataFrame.where( condition = 'age >10)//设置查询条件

. select( cols ='name)//设置查询的表

.show()//输出展示结果

//将以上 dataFrame 语句与 SQL 语句对比,可以发现两者十分相似,同时 SQL 能做的操作,dataFrame 同样支持。

4. 运行结果

将代码在 IDAE 运行后,可以看到显示的年龄大于10的 zhangsan 和 lisi 数据被成功查出,说明以上 dataFrame 的使用正确。

 

二、总结

1. DataFrame 是类似与一张关系型数据库的表

2. 在 DataFrame 上的操作非常类似 SQL 语句

3. 而 DataFrame 为什么能够使用 SQL 语句和关系型数据表是因为 DataFrame 中划分为行和列还有 Schema,Schema 指结构性信息。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
5月前
|
JSON 数据挖掘 数据格式
Pandas中Series、DataFrame讲解及操作详解(超详细 附源码)
Pandas中Series、DataFrame讲解及操作详解(超详细 附源码)
122 0
|
1月前
|
存储 索引 Python
dataframe学习知识总结
pandas DataFrame是Python中用于处理二维表格数据的重要数据结构,支持多种类型数据,提供丰富功能。可通过字典、列表或文件创建DataFrame,使用`.info()`、`.describe()`、`.head()`和`.tail()`查看数据信息。选择和过滤数据可按列名、行索引或条件进行。修改包括更新元素、列及添加/删除列。利用`.groupby()`和聚合函数进行分组分析,使用`.sort_values()`和`.rank()`排序,通过`.concat()`和`.merge()`合并数据。
21 3
|
1月前
|
数据处理 数据库 索引
|
11月前
|
存储 数据挖掘 Python
为什么你需要Pandas的DataFrame
为什么你需要Pandas的DataFrame
74 0
|
11月前
|
索引 Python
pandas把Series组合成DataFrame
pandas把Series组合成DataFrame
|
数据可视化 数据挖掘 API
5分钟掌握Pandas GroupBy
5分钟掌握Pandas GroupBy
119 0
5分钟掌握Pandas GroupBy
|
人工智能 Shell 开发者
Pandas-dataframe|学习笔记
快速学习 Pandas-dataframe
79 0
|
数据采集 自然语言处理 数据挖掘
Pandas的介绍及 Series、 DataFrame的创建
Pandas 是一个强大的分析结构化数据的工具集;它的使用基础是 Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。Pandas 的主要数据结构是 Series(一维数据)和 DataFrame(二维数据)。
128 0