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

简介: 快速学习 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是一款灵活且高性能的文档型数据库,具有可扩展性和强大的查询功能,适用于各种应用场景。
1433 1
|
5月前
|
存储 关系型数据库 BI
如何开发ERP系统中的财务管理板块(附架构图+流程图+代码参考)
本文深入解析ERP系统中财务管理模块的设计与实现,涵盖核心功能、业务流程、开发技巧及代码示例,助力企业打造高效、智能的财务管理系统。
|
3月前
|
存储 前端开发 关系型数据库
终于有人把数据仓库讲明白了
数据仓库不是大号数据库,更不是BI附属品。它通过整合多源数据、统一标准,让数据更易查、易用,真正服务于业务分析与决策。本文带你厘清数据仓库的本质、架构与搭建步骤,避开常见误区,实现数据价值最大化。
终于有人把数据仓库讲明白了
|
5月前
|
存储 消息中间件 开发框架
如何开发一套ERP系统(附架构图+流程图+代码参考)
ERP系统是企业资源计划的核心工具,有效解决信息孤岛、数据重复等问题,提升管理效率与运营成本控制能力。本文详解ERP系统的核心模块及订单管理模块的开发流程,涵盖功能设计、技术选型与代码示例,助力企业高效搭建信息系统。
|
机器学习/深度学习 索引 Python
技术经验分享:DataFrame(1):结构介绍
技术经验分享:DataFrame(1):结构介绍
750 0
|
SQL JSON 分布式计算
Dataframe
Dataframe
705 3
|
存储 安全 Cloud Native
阿里云推出创业者计划介绍,加入计划可获得最低3500元,最高100万抵扣金
阿里云创业者计划是面向中小企业推出的一项扶持计划,致力于为中小企业构建智能时代的核心竞争力,同时聚合众多知名投资机构、加速器、孵化器和大企业创新力量,向中小企业提供全方位的赋能与服务。成功加入计划后,阿里云将提供最低3500元、最高100万元的上云抵扣金,让中小企业享受免费的云资源和技术服务,助力初创企业开启智能时代创业新范式。
阿里云推出创业者计划介绍,加入计划可获得最低3500元,最高100万抵扣金
|
存储 关系型数据库 MySQL
MySQL多表查询之外连接详解
在MySQL数据库中,多表查询是一种常见且强大的功能,允许您在多个表之间执行联接操作,从而检索、过滤和组合数据。在本篇博客中,我们将深入探讨多表查询的一种类型,即外连接(Outer Join),并详细介绍其语法、用途和示例。无论您是刚开始学习数据库还是想深入了解MySQL的查询功能,本文都将为您提供有价值的信息。
1225 0
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记二十二:基于 LeNet5 的手写数字识别及训练
本文介绍了使用PyTorch复现LeNet5模型并检测手写数字的过程。通过搭建PyTorch环境、安装相关库和下载MNIST数据集,实现了模型训练与测试。训练过程涉及创建虚拟环境、安装PyTorch及依赖库、准备数据集,并编写训练代码。最终模型在测试集上的准确率达到0.986,满足预期要求。此项目为后续在RK3568平台上部署模型奠定了基础。
|
存储 消息中间件 Kafka
细说数据仓库分层架构
【7月更文挑战第20天】数据仓库分层架构包括缓冲层、操作数据层、明细数据层、汇总数据层和数据集市层。