DataFrame 是什么?

前言

本文隶属于专栏《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

  • 13
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值