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

图解大数据|图解大数据 | 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大数据处理分析
文章图片

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

根据官方文档的解释,我们可以发现 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大数据处理分析
文章图片

2)Spark生态及DataFrame所处位置 图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

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

2.DataFrame 创建方式 1)创建DataFrame的数据源 Spark SQL,DataFrame,datasets 共用 Spark SQL 库,三者共享同样的代码优化、生成以及执行流程,所以 SQL,DataFrame,datasets 的入口都是 SQLContext。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

2)创建DataFrame的步骤 以python代码(pyspark)为例,我们在创建spark Dataframe之前,需要先初试化Sparksession。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

  • 获取数据集与代码 → ShowMeAI的官方GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler
基于sparksession对象我们可以通过read函数对不同类型的文本形态数据进行加载(比如下图演示的是json格式)
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

  • 获取数据集与代码 → ShowMeAI的官方GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler
当然,我们也可以通过RDD初始化spark Dataframe,参考代码如下图所示:
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

  • 获取数据集与代码 → ShowMeAI的官方GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler
我们也可以直接从csv文件加载数据,如下图参考代码所示:
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

  • 获取数据集与代码 → ShowMeAI的官方GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler
构建完成的spark Dataframe可以通过printSchema查看Dataframe的结构形态,如下参考代码所示:
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

  • 获取数据集与代码 → ShowMeAI的官方GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler
3.DataFrame数据核心操作 DataFrame的操作API汇总如下图所示:
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

1)Agg 可以通过agg操作对spark Dataframe的数据进行聚合统计。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

2)Alias Alias操作主要是对spark Dataframe的字段进行重命名操作。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

3)Cache cache用于对数据持久化,对应操作下的数据,不会在spark计算过程中反复计算。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

4)Collect collect操作会把数据直接把数据取回内存,以python列表形态返回。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

5)Columns 可以通过columns操作获取字段名称列表。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

6)Corr 对于数据的统计计算,比如相关性可以通过corr操作完成。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

7)Count 可以通过count操作完成Dataframe数据的计数统计。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

8)Describe 我们通过describe函数可以查看Dataframe数据的基本统计信息。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

9)Distinct 如果要对Dataframe数据进行虑重操作,可以使用distinct算子操作。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

10)Drop 删除数据或者字段都可以通过drop算子完成。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

11)Dropna dropna可以帮助我们剔除掉数据中的缺失值记录或者字段。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

12)Fillna 我们可以通过fillna来填充Dataframe缺失值。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

13)Filter 我们可以通过filter操作对spark Dataframe的数据进行条件过滤。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

14)First first可以取出spark Dataframe的第1条数据记录并返回。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

15)FlatMap Spark Dataframe中的flatmap和RDD中的操作类似,也可以帮助我们把数据变换并平铺返回。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

16)Head 可以通过head操作返回前n条数据记录。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

17)Groupby 对于Spark Dataframe大数据的分组可以通过groupby完成
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

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

18)Join 我们通过Join操作对Spark Dataframe的不同数据表进行连接聚合。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

19)OrderBy 可以通过orderby对spark Dataframe数据进行排序操作。
【图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析】图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

4.Spark SQL 操作
  • 《更多资料 → 数据科学工具速查 | Spark使用指南(SQL版)》
1)通过SQL对数据进行操作 除了使用DataFrame API数据,还可以注册成table,通过SQL对数据进行操作。
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

2)案例详解 图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

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

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

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

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

5.参考资料
  • 数据科学工具速查 | Spark使用指南(RDD版) http://www.showmeai.tech/article-detail/106
  • 数据科学工具速查 | Spark使用指南(SQL版) http://www.showmeai.tech/article-detail/107
  • 纪涵,靖晓文,赵政达 著,Spark SQL入门与实践指南,清华大学出版社,2018
  • MICK(作者)孙淼(译者) ,SQL基础教程 第2版,人民邮电出版社,2017
  • SparkSQL官方文档中文版,http://spark.apachecn.org/docs/cn/2.2.0/sql-programming-guide.html
ShowMeAI相关文章推荐
  • 图解大数据 | 导论:大数据生态与应用
  • 图解大数据 | 分布式平台:Hadoop与Map-reduce详解
  • 图解大数据 | 实操案例:Hadoop系统搭建与环境配置
  • 图解大数据 | 实操案例:应用map-reduce进行大数据统计
  • 图解大数据 | 实操案例:Hive搭建与应用案例
  • 图解大数据 | 海量数据库与查询:Hive与HBase详解
  • 图解大数据 | 大数据分析挖掘框架:Spark初步
  • 图解大数据 | Spark操作:基于RDD的大数据处理分析
  • 图解大数据 | Spark操作:基于Dataframe与SQL的大数据处理分析
  • 图解大数据 | 综合案例:使用spark分析美国新冠肺炎疫情数据
  • 图解大数据 | 综合案例:使用Spark分析挖掘零售交易数据
  • 图解大数据 | 综合案例:使用Spark分析挖掘音乐专辑数据
  • 图解大数据 | 流式数据处理:Spark Streaming
  • 图解大数据 | Spark机器学习(上)-工作流与特征工程
  • 图解大数据 | Spark机器学习(下)-建模与超参调优
  • 图解大数据 | Spark GraphFrames:基于图的数据分析挖掘
ShowMeAI系列教程推荐
  • 图解Python编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解AI数学基础:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程
图解大数据|图解大数据 | Spark Dataframe/SQL大数据处理分析
文章图片

    推荐阅读