为什么Spark中的RDD、DataFrame和Dataset会被称为API
《Spark权威指南:大数据处理极简实现》中提到:DataFrame是最常用的结构化API,可简单表示为带有行和列的数据表
为什么RDD、DataFrame、Dataset被归类为API
API(应用程序编程接口)的核心本质是预先封装底层复杂逻辑,对外暴露统一、易用的调用约定,开发者不需要理解内部实现细节,只要按照规则调用就能获得对应的能力。这三类Spark的数据抽象完全符合API的定义,原因如下:
- 三者都是Spark封装的分布式数据处理入口:你不需要手动实现底层分布式场景下的分片存储、节点通信、容错重试、任务调度逻辑,只需要调用这三类抽象提供的
map、filter、join、groupBy等标准方法,就能完成TB级数据的分布式处理,属于典型的能力封装接口。 - 三者是开发者和Spark计算引擎交互的约定介质:你基于这三类抽象编写的处理逻辑,会被Spark的Catalyst优化器自动解析为逻辑执行计划、优化后生成物理执行计划,最终分发到集群节点运行,相当于你通过这三类API向Spark传递你的计算需求,不需要直接对接底层的资源调度、任务管理模块。
- 三类API针对不同开发场景做了能力区分:
- RDD是Spark最早推出的非结构化API,支持最细粒度的数据处理逻辑控制,适合定制化程度高的计算场景
- DataFrame、Dataset属于结构化API,自带Schema元信息,Spark可以基于元信息做大量执行优化,开发效率和运行性能远高于RDD,也是目前生产环境的主流选择
内容的提问来源于stack exchange,提问作者hemu
相关产品推荐
相关产品推荐

