图解大数据 | Spark Dataframe/SQL大数据处理分析

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

1.Spark Dataframe 简介

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

DataFrame是一个以命名列方式组织的分布式数据集。在概念上,它跟关系型数据库中的一张表或者1个Python(或者R)中的data frame一样,但是进行了一些优化。DataFrame可以根据结构化的数据文件、hive表、外部数据库或者已经存在的RDD构造。

图解大数据 | Spark Dataframe/SQL大数据处理分析_第1张图片

图解大数据 | Spark Dataframe/SQL大数据处理分析_第2张图片

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

  • 分布式的数据集
  • 与关系型数据库中的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

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第3张图片

2)Spark生态及DataFrame所处位置

图解大数据 | Spark Dataframe/SQL大数据处理分析_第4张图片

图解大数据 | Spark Dataframe/SQL大数据处理分析_第5张图片

2.DataFrame 创建方式

1)创建DataFrame的数据源

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第6张图片

2)创建DataFrame的步骤

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第7张图片

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第8张图片

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第9张图片

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第10张图片

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第11张图片

3.DataFrame数据核心操作

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第12张图片

1)Agg

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第13张图片

2)Alias

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第14张图片

3)Cache

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第15张图片

4)Collect

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第16张图片

5)Columns

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第17张图片

6)Corr

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第18张图片

7)Count

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第19张图片

8)Describe

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第20张图片

9)Distinct

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第21张图片

10)Drop

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第22张图片

11)Dropna

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第23张图片

12)Fillna

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第24张图片

13)Filter

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第25张图片

14)First

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第26张图片

15)FlatMap

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第27张图片

16)Head

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第28张图片

17)Groupby

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第29张图片

图解大数据 | Spark Dataframe/SQL大数据处理分析_第30张图片

18)Join

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第31张图片

19)OrderBy

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第32张图片

4.Spark SQL 操作

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

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

图解大数据 | Spark Dataframe/SQL大数据处理分析_第33张图片

2)案例详解

图解大数据 | Spark Dataframe/SQL大数据处理分析_第34张图片

图解大数据 | Spark Dataframe/SQL大数据处理分析_第35张图片

图解大数据 | Spark Dataframe/SQL大数据处理分析_第36张图片

图解大数据 | Spark Dataframe/SQL大数据处理分析_第37张图片

图解大数据 | Spark Dataframe/SQL大数据处理分析_第38张图片

5.参考资料

ShowMeAI相关文章推荐

ShowMeAI系列教程推荐

图解大数据 | Spark Dataframe/SQL大数据处理分析_第39张图片

你可能感兴趣的:(图解大数据 | Spark Dataframe/SQL大数据处理分析)