乐趣区

关于大数据:图解大数据-Spark-DataframeSQL大数据处理分析

作者:韩信子 @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 有以下几个外围点:

  • 分布式的数据集
  • 与关系型数据库中的 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 优化器生成优化后的执行代码,所以其执行速度会更快。

2)Spark 生态及 DataFrame 所处地位

2.DataFrame 创立形式

1)创立 DataFrame 的数据源

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

2)创立 DataFrame 的步骤

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

  • 获取数据集与代码 → ShowMeAI 的官网 GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler

基于 sparksession 对象咱们能够通过 read 函数对不同类型的文本状态数据进行加载(比方下图演示的是 json 格局)

  • 获取数据集与代码 → ShowMeAI 的官网 GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler

当然,咱们也能够通过 RDD 初始化 spark Dataframe,参考代码如下图所示:

  • 获取数据集与代码 → ShowMeAI 的官网 GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler

咱们也能够间接从 csv 文件加载数据,如下图参考代码所示:

  • 获取数据集与代码 → ShowMeAI 的官网 GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler

构建实现的 spark Dataframe 能够通过 printSchema 查看 Dataframe 的构造状态,如下参考代码所示:

  • 获取数据集与代码 → ShowMeAI 的官网 GitHub https://github.com/ShowMeAI-Hub/awesome-AI-cheatsheets
  • 运行代码段与学习 → 在线编程环境 http://blog.showmeai.tech/python3-compiler

3.DataFrame 数据外围操作

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

1)Agg

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

2)Alias

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

3)Cache

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

4)Collect

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

5)Columns

能够通过 columns 操作获取字段名称列表。

6)Corr

对于数据的统计计算,比方相关性能够通过 corr 操作实现。

7)Count

能够通过 count 操作实现 Dataframe 数据的计数统计。

8)Describe

咱们通过 describe 函数能够查看 Dataframe 数据的根本统计信息。

9)Distinct

如果要对 Dataframe 数据进行虑重操作,能够应用 distinct 算子操作。

10)Drop

删除数据或者字段都能够通过 drop 算子实现。

11)Dropna

dropna 能够帮忙咱们剔除掉数据中的缺失值记录或者字段。

12)Fillna

咱们能够通过 fillna 来填充 Dataframe 缺失值。

13)Filter

咱们能够通过 filter 操作对 spark Dataframe 的数据进行条件过滤。

14)First

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

15)FlatMap

Spark Dataframe 中的 flatmap 和 RDD 中的操作相似,也能够帮忙咱们把数据变换并平铺返回。

16)Head

能够通过 head 操作返回前 n 条数据记录。

17)Groupby

对于 Spark Dataframe 大数据的分组能够通过 groupby 实现

18)Join

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

19)OrderBy

能够通过 orderby 对 spark Dataframe 数据进行排序操作。

4.Spark SQL 操作

  • 《更多材料 → 数据迷信工具速查 | Spark 使用指南 (SQL 版)》

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

除了应用 DataFrame API 数据,还能够注册成 table,通过 SQL 对数据进行操作。

2)案例详解

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 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程

退出移动版