【大数据学习】SparkSQL 之 DataFrame与RDD的区别

DataFrame与RDD的区别

看上图,左侧的RDD[Person]虽然以Person为类型参数,但Spark框架本身不了解Person类的内部结构,而右侧的DataFrame就不一样了,它更像是一个二维表格,在这个二维表格里面,有行有列。使得Spark SQL可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么。DataFrame多了数据的结构信息,即不仅可以知道里面的数据,而且它还可以知道里面的schema信息。相当于结构化的了,而平常我们所说的优化,如果想要优化的更好,所要暴露的信息更多就越好,这样系统才能更好大的进行优化 。以上是从存储的角度分析两者的区别。

现在再结合上图进行理解:

Java 、Scala操作RDD的底层是跑在JVM上的,而Python是跑在python execution,由于环境不一样,从而他们执行时的效率不一样的。但是有DF就不一样的,经过DF后,再经过一层逻辑执行计划,等于将Java ,Scala,Python 等全部都转换成逻辑执行计划Logicplan,完了后才到物理执行计划Physical Execution。所以不管是什么语言,执行的效率几乎是一样的。这个就是从计算(执行)的角度去分析两者的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值