DataFrame 是什么?

DataFrame是Spark SQL的核心抽象,作为比RDD更高级的数据结构,它提供了对结构化数据的优化处理。DataFrame理解每条数据的列结构,类似于数据库的表或R/Python的DataFrame。它可以从多种数据源加载,如文件、Hive、数据库,并支持多种语言如Scala、Java、Python和R。DataFrame在底层是Dataset[Row],提供丰富的API用于SQL查询和数据分析。要了解更多,可以查阅关于RDD与DataFrame的区别以及Spark源码中的Dataset解读。
Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

正文

DataFrame 的定义与 RDD 类似,即都是 Spark 平台用以分布式并行计算的不可变分布式数据集合

与 RDD 最大的不同在于, RDD 仅仅是一条条数据的集合,并不了解每一条数据的内容是怎样的,

而 DataFrame 明确的了解每一条数据有几个命名字段组成,

即可以形象地理解为 RDD 是一条条数据组成的一维表,而 DataFrame 是每一行数据都有共同清晰的列划分的二维表

关于 RDD 和 DataFrame 的区别请参考我的这篇博客——RDD 和 DataFrame 的区别是什么?

概念上来说,它和关系型数据库的表或者 R 和 Python 中 DataFrame 等价,只不过 DataFrame 在底层实现了更多优化从编程角度来说,

DataFrame 是 Spark SQL 模块所需处理的结构化数据的核心抽象,即在 Spark 程序中若想要使用简易的 SQL 接口对数据进行分析,首先需要将所处理数据源转化为 DataFrame 对象,进而在 DataFrame 对象上调用各种 API 来实现需求。

DataFrame 可以从许多结构化数据源加载并构造得到,如:结构化数据文件, Hive 中的表,外部数据库,已有的 DataframeAPI 支持多种高级程序语言 Scala 、 Java 、 Python 和 R 。

另外值得注意的是,正如下面源码中所提示的那样,在 Java 和 Scala 中, DataFrame 其实就是 Data/Dataset[Row],即由表示每一行内容的 Row 对象组成的 Dataset 对象,

  type DataFrame = Dataset[Row]

因此大家如果想去官方 API 手册查询 DataFrame 丰富的 API 时,应该在 Dataset 类下查找。

关于 Dataset 请参考我的博客——从 Spark 源码角度解读 Dataset

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值