进化的Spark, 从DataFrame说起

进化的Spark, 从DataFrame说起
书接上回,Spark可以说就是RDDs的化身,我们已经看到RDDs的设计方案对于大数据的计算具有诸多优势,但是随着Spark项目的推进,大家也逐渐地发现,在实际的生产领域,Spark RDDs API的编程方式并不是唯一的选择,很多的计算,都很像目前关系型数据库中的关联查询,而所谓的“信息”,其实很大部分都是产生自数据与数据之间的关联,而对于这样的数据模型,RDDs模型的表达能力还是相对有限的。 Spark 1.3.0的发布带来了全新的DataFrame API以及Spark SQL,我们继续追根溯源,找到关于DataFrame与Spark SQL的核心设计稿 - Spark sql: Relational data processing in spark[1]。 从这篇文章的角度来讲,DataFrame API和Spark SQL是配套的,从下图我们就可以看出来新增的这个模块与原有Spark框架的关系: 它们只是以不同的角度来诠释Spark在关系型数据的处理能力,可以看到,整个S

从RDDs到Spark

从RDDs到Spark
Spark是近年来非常火爆的分布式计算框架,可以说它紧跟Hadoop的脚步,并且在很多方面实现了超越。在Spark官方的宣传中我们也可以看到,Hadoop能做到的事情,Spark也可以做,而且通常可以做得更好。事实上,越来越多的业内公司都开始试水Spark,因为其核心卖点内存计算加速以及简洁优雅的编程接口不光可以为某些分布式批处理应用提速,还可以降低分布式计算应用的编写门槛。由于我不是数据工程师,所以我并不太关心分布式应用的编写环节(例如如何利用Spark进行数据挖掘、机器学习……),我更关心Spark这个计算框架以及这个分布式系统的体系结构。现在有很多书都在写Spark源码,但是很遗憾的是,在我看来,这些源码分析做得很“工程”,要知道很少有人会因为某某软件开源,就去死磕它的代码,人们往往需要带着目的去研究他们的代码,从而补足书面文献中所缺少的部分,其次才是看他们的实现是否够“优雅”,够“软件”。 希望本文能做做成一个系列,记录我学习Spark的点滴,同时也将我的学习思路分享给大家。 研究一个软...