图解大数据 | 基于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的热门话题分析
目录
相关文章
|
11月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
12月前
|
存储 SQL 分布式计算
终于!大数据分析不用再“又要快又要省钱”二选一了!Dataphin新功能太香了!
Dataphin推出查询加速新功能,支持用StarRocks等引擎直连MaxCompute或Hadoop查原始数据,无需同步、秒级响应。数据只存一份,省成本、提效率,权限统一管理,打破“又要快又要省”的不可能三角,助力企业实现分析自由。
562 49
|
11月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
11月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
12月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
11月前
|
传感器 人工智能 监控
拔俗多模态跨尺度大数据AI分析平台:让复杂数据“开口说话”的智能引擎
在数字化时代,多模态跨尺度大数据AI分析平台应运而生,打破数据孤岛,融合图像、文本、视频等多源信息,贯通微观与宏观尺度,实现智能诊断、预测与决策,广泛应用于医疗、制造、金融等领域,推动AI从“看懂”到“会思考”的跃迁。
823 0
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
771 0
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
1320 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
866 79