图解大数据 | 基于Dataframe / SQL大数据处理分析@Spark操作

简介: DataFrame是一个以命名列方式组织的分布式数据集。本文详细讲解 Spark Dataframe的创建方式,Dataframe数据的Agg、Collect、Groupby、Join等核心操作,以及Spark SQL操作核心要点。

ShowMeAI研究中心

作者:韩信子@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/84
本文地址http://www.showmeai.tech/article-detail/175
声明:版权所有,转载请联系平台与作者并注明出处

收藏ShowMeAI查看更多精彩内容


1.Spark Dataframe 简介

在高版本的Spark中,我们可以使用Dataframe这个结构形态更方便快捷地对数据进行处理,而且它也和我们熟悉的python pandas Dataframe的很多操作可以类比关联。

DataFrame是一个以命名列方式组织的分布式数据集。在概念上,它跟关系型数据库中的一张表或者1个Python(或者R)中的data frame一样,但是进行了一些优化。

DataFrame可以根据结构化的数据文件、hive表、外部数据库或者已经存在的RDD构造。

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark DataFrame; 支持的数据源; 9-1

根据官方文档的解释,我们可以发现 Spark DataFrame 有以下几个核心点:

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark DataFrame; 官方文档; 9-2

  • 分布式的数据集
  • 与关系型数据库中的table、excel 里的一张 sheet、python/R 里的 DataFrame等类似
  • 拥有丰富的操作函数,类似于 RDD 中的算子
  • 一个 DataFrame 可以被注册成一张数据表,然后用 SQL 语言在上面操作
  • 丰富的创建方式:结构化数据文件、Hive表、外部数据库、已有的RDD

1)DataFrame的优势

DataFrame API 是在 R 和 Python Pandas Dataframe 灵感之上设计的,具有以下功能特性:

  • 从KB到PB级的数据量支持
  • 多种数据格式和多种存储系统支持
  • 通过Spark SQL 的 Catalyst 优化器进行先进的优化,生成代码
  • 通过Spark无缝集成所有大数据工具与基础设施
  • 为Python、Java、Scala和R语言(SparkR)API

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark DataFrame; DataFrame的优势; 9-3

简单来说,DataFrame 能够更方便的操作数据集,而且因为其底层是通过 Spark SQL 的 Catalyst优化器生成优化后的执行代码,所以其执行速度会更快。

2)Spark生态及DataFrame所处位置

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark DataFrame; DataFrame的位置; 9-4

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark DataFrame; DataFrame的位置; 9-5

2.DataFrame 创建方式

1)创建DataFrame的数据源

Spark SQL,DataFrame,datasets 共用 Spark SQL 库,三者共享同样的代码优化、生成以及执行流程,所以 SQL,DataFrame,datasets 的入口都是 SQLContext。

Spark操作; 基于Dataframe与SQL的大数据处理分析; 创建DataFrame; 创建DataFrame的数据源; 9-6

2)创建DataFrame的步骤

以python代码(pyspark)为例,我们在创建spark Dataframe之前,需要先初试化Sparksession。

Spark操作; 基于Dataframe与SQL的大数据处理分析; 创建DataFrame; 创建 SparkSession; 9-7

基于sparksession对象我们可以通过read函数对不同类型的文本形态数据进行加载(比如下图演示的是json格式)

Spark操作; 基于Dataframe与SQL的大数据处理分析; 创建DataFrame; 从json文件创建DataFrame; 9-8

当然,我们也可以通过RDD初始化spark Dataframe,参考代码如下图所示:

Spark操作; 基于Dataframe与SQL的大数据处理分析; 创建DataFrame; 从RDD创建DataFrame; 9-9

我们也可以直接从csv文件加载数据,如下图参考代码所示:

Spark操作; 基于Dataframe与SQL的大数据处理分析; 创建DataFrame; 从csv文件创建DataFrame; 9-10

构建完成的spark Dataframe可以通过printSchema查看Dataframe的结构形态,如下参考代码所示:

Spark操作; 基于Dataframe与SQL的大数据处理分析; 创建DataFrame; 通过schema查看DataFrame结构; 9-11

3.DataFrame数据核心操作

DataFrame的操作API汇总如下图所示:

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; DataFrame API操作; 9-12

1)Agg

可以通过agg操作对spark Dataframe的数据进行聚合统计。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Agg聚合; 9-13

2)Alias

Alias操作主要是对spark Dataframe的字段进行重命名操作。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Alias重命名; 9-14

3)Cache

cache用于对数据持久化,对应操作下的数据,不会在spark计算过程中反复计算。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Cache; 9-15

4)Collect

collect操作会把数据直接把数据取回内存,以python列表形态返回。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Collect; 9-16

5)Columns

可以通过columns操作获取字段名称列表。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Columns; 9-17

6)Corr

对于数据的统计计算,比如相关性可以通过corr操作完成。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Corr; 9-18

7)Count

可以通过count操作完成Dataframe数据的计数统计。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Count; 9-19

8)Describe

我们通过describe函数可以查看Dataframe数据的基本统计信息。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Describe; 9-20

9)Distinct

如果要对Dataframe数据进行虑重操作,可以使用distinct算子操作。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Distinct; 9-21

10)Drop

删除数据或者字段都可以通过drop算子完成。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Drop; 9-22

11)Dropna

dropna可以帮助我们剔除掉数据中的缺失值记录或者字段。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Dropna; 9-23

12)Fillna

我们可以通过fillna来填充Dataframe缺失值。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Fillna; 9-24

13)Filter

我们可以通过filter操作对spark Dataframe的数据进行条件过滤。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Filter; 9-25

14)First

first可以取出spark Dataframe的第1条数据记录并返回。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; First; 9-26

15)FlatMap

Spark Dataframe中的flatmap和RDD中的操作类似,也可以帮助我们把数据变换并平铺返回。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; FlatMap; 9-27

16)Head

可以通过head操作返回前n条数据记录。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Head; 9-28

17)Groupby

对于Spark Dataframe大数据的分组可以通过groupby完成

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; GroupBy; 9-29

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; groupBy(col1)9-30

18)Join

我们通过Join操作对Spark Dataframe的不同数据表进行连接聚合。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; Join; 9-31

19)OrderBy

可以通过orderby对spark Dataframe数据进行排序操作。

Spark操作; 基于Dataframe与SQL的大数据处理分析; DataFrame API; OrderBy; 9-32

4.Spark SQL 操作

1)通过SQL对数据进行操作

除了使用DataFrame API数据,还可以注册成table,通过SQL对数据进行操作。

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark SQL操作; 通过SQL对数据进行操作; 9-33

2)案例详解

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark SQL操作; 初始化SparkSession; 9-34

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark SQL操作; 构建数据集与序列化; 9-35

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark SQL操作; 构建数据集与序列化; 9-36

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark SQL操作; DataFrame请求方式 VS SQL; 9-37

Spark操作; 基于Dataframe与SQL的大数据处理分析; Spark SQL操作; DataFrame请求方式 VS SQL; 9-38

参考资料

【大数据技术与处理】推荐阅读

ShowMeAI 系列教程推荐

ShowMeAI用知识加速每一次技术成长

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
目录
相关文章
|
7月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
7月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
7月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
7月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
589 0
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
856 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
589 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
369 6
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1416 3