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

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: 快速学习 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
NoSQL 安全 MongoDB
Mongo DB之用户与权限管理、备份与恢复管理以及客户端工具的使用
MongoDB是一款灵活且高性能的文档型数据库,具有可扩展性和强大的查询功能,适用于各种应用场景。
1324 1
|
3月前
|
存储 关系型数据库 BI
如何开发ERP系统中的财务管理板块(附架构图+流程图+代码参考)
本文深入解析ERP系统中财务管理模块的设计与实现,涵盖核心功能、业务流程、开发技巧及代码示例,助力企业打造高效、智能的财务管理系统。
|
3月前
|
存储 消息中间件 开发框架
如何开发一套ERP系统(附架构图+流程图+代码参考)
ERP系统是企业资源计划的核心工具,有效解决信息孤岛、数据重复等问题,提升管理效率与运营成本控制能力。本文详解ERP系统的核心模块及订单管理模块的开发流程,涵盖功能设计、技术选型与代码示例,助力企业高效搭建信息系统。
|
机器学习/深度学习 索引 Python
技术经验分享:DataFrame(1):结构介绍
技术经验分享:DataFrame(1):结构介绍
574 0
|
存储 项目管理
「软件项目管理」一文详解软件配置管理计划
该文章详细阐述了软件配置管理计划的各个方面,包括配置管理的基本概念、配置项的标识、变更控制流程以及配置审计的方法,并提供了实施配置管理的最佳实践。
「软件项目管理」一文详解软件配置管理计划
|
SQL JSON 分布式计算
Dataframe
Dataframe
564 3
|
监控 项目管理 开发者
『软件工程7』详解软件项目管理之风险分析与管理
该文章详细讲解了软件项目管理中的风险分析与管理,包括风险的定义、类型、管理流程以及如何建立和使用风险表来跟踪和处理潜在风险。
|
11月前
|
数据挖掘 索引 Python
如何在处理重复值时保持数据的原始顺序?
可以在处理数据重复值时有效地保持数据的原始顺序,确保数据在清洗和预处理过程中不会因为重复值的处理而导致顺序混乱,从而保证了数据分析结果的准确性和可靠性。
359 64
|
机器学习/深度学习 数据采集 算法
利用未标记数据的半监督学习在模型训练中的效果评估
本文将介绍三种适用于不同类型数据和任务的半监督学习方法。我们还将在一个实际数据集上评估这些方法的性能,并与仅使用标记数据的基准进行比较。
892 8
|
存储 关系型数据库 MySQL
MySQL多表查询之外连接详解
在MySQL数据库中,多表查询是一种常见且强大的功能,允许您在多个表之间执行联接操作,从而检索、过滤和组合数据。在本篇博客中,我们将深入探讨多表查询的一种类型,即外连接(Outer Join),并详细介绍其语法、用途和示例。无论您是刚开始学习数据库还是想深入了解MySQL的查询功能,本文都将为您提供有价值的信息。
1156 0