图解大数据 | 基于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的热门话题分析
目录
相关文章
|
人工智能 分布式计算 大数据
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
2062 36
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
存储 分布式计算 Hadoop
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
972 79
|
SQL JSON 分布式计算
Spark SQL架构及高级用法
Spark SQL基于Catalyst优化器与Tungsten引擎,提供高效的数据处理能力。其架构涵盖SQL解析、逻辑计划优化、物理计划生成及分布式执行,支持复杂数据类型、窗口函数与多样化聚合操作,结合自适应查询与代码生成技术,实现高性能大数据分析。
1115 2
|
SQL 人工智能 分布式计算
别再只会写SQL了!这五个大数据趋势正在悄悄改变行业格局
别再只会写SQL了!这五个大数据趋势正在悄悄改变行业格局
450 0
|
SQL 分布式计算 大数据
SparkSQL 入门指南:小白也能懂的大数据 SQL 处理神器
在大数据处理的领域,SparkSQL 是一种非常强大的工具,它可以让开发人员以 SQL 的方式处理和查询大规模数据集。SparkSQL 集成了 SQL 查询引擎和 Spark 的分布式计算引擎,使得我们可以在分布式环境下执行 SQL 查询,并能利用 Spark 的强大计算能力进行数据分析。
|
SQL 大数据 数据挖掘
玩转大数据:从零开始掌握SQL查询基础
玩转大数据:从零开始掌握SQL查询基础
667 35
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。