:::: MENU ::::

TalkingData's Blog

现在开始,用数据说话。

数据科学 | 详解最近两年最为火热的大数据技术——Spark 2.0

  • 七 25 / 2016
  • 0
Tech

数据科学 | 详解最近两年最为火热的大数据技术——Spark 2.0

20150708045433148
Spark的下一个重要版本

如果说最近两年最为火热的大数据技术,Spark说第二,相信没有其他技术敢说第一。从2013年Spark作为开源项目加入到Apache社区,Spark开始作为一个新兴的大数据处理技术席卷大数据技术圈。Spark中文的含义是火花,真是印证了中国一句名言:“星星之火,可以燎原”。

现在整个Spark社区已经有超过来自于超过100家公司的400多开发者在参与Spark社区的贡献。经过两年多的发展,Spark终于要迎来下一个重要的版本 – Spark 2.0,虽然正式版还在路上,但是Spark 2.0 Preview版本已经于5月份与广大的Spark用户见面了(本来说好是5月份发布正式版的)。从年初的Spark Summit, Databricks就开始对Spark 2.0进行预热,可见Spark 2.0应该是一个非常重大的技术升级,那到底Spark 2.0能够带来些什么呢?

更易用

任何技术,降低使用门槛毋庸置疑能够取得更好的普及效果,并且能够带来更大的技术的价值。Spark创新的RDD的确相对于Hadoop的MR在数据处理的性能上有了质的飞跃。不过RDD的使用仍旧复杂。Spark 1.x引入了Spark SQL,并且一直在对Spark SQL的引擎进行优化。同时DataFrame的引入也降低了开发的复杂度。在Spark 2.0当中,对于标准SQL有了更好的支持,从Reynold的博客中可以了解到,Spark 2.0可以支持所有的 99个 TPC-DS查询,而这99个TPC-DS查询需要很多的SQL 2003的特性。这对于广大的数据工作者来讲无疑是一个福音。

Spark2.0的另外的增强是把DataFrame和DataSet API进行了统一。 DataFrame将是DataSet中行的类型别名。

为了方便使用,Spark 2.0引入了一个新的程序开发切入点-SparkSession,用于替换原来的SqlContext或者HiveContext。这样使用者可以不用纠结何时该用SqlContext以及何时该用HiveContext,用SparkSession就可以了。

另外,Spark 2.0中机器学习的API也基于DataFrame来实现了,虽然老的mllib仍然被支持,统一到用DataFrame使得Spark可以将机器学习库和数据处理的基础的API都统一在DataFrame之上了。

在Spark 2.0中,用户可以保存和装载Spark支持的任何语言的机器学习的pipeline和model,对于数据科学家来讲,这也能够带来生产效率的提高。

对于广大的使用R的数据科学家来讲,Spark 2.0支持用R语言编写的GLM、Naive Bayes、Survival Regression、以及K-means算法的并行执行。

更快速

本来以执行速度著称的Spark,在2.0中为了提高速度,Spark将钨丝计划进行到第二个阶段。新的钨丝引擎吸收了很多现代的编译器和MPP的思想,主要的思想是进行Code generation,通过运行时将代码编译为本地代码,将query优化到一个函数中去执行,从而减少CPU的无谓的执行时间,大大提高执行的性能。从比较看,大部分的操作,Spark 2.0相比Spark 1.6都有超过10倍的性能的提高。比较如下图:

更智能

在Spark 2.0中引入了结构化流处理的概念,这个结构化流处理的概念不同于将所有事情都当作流的思想。基于很多Spark的用户已经习惯使用DataFrame/DataSet API进行批量的计算,结构化流处理利用支持DataFrame的Catalyst优化器发现是否需要将静态不变的批量计算操作转化为支持在动态的、持续的数据上的增量执行。这样,对于开发者来讲,并不需要了解是否是在进行流式计算,相对于1.x版本的DStream,结构化流处理概念的自动适配流处理和批处理的能力无疑是更为智能的。

未来我们将继续关注Spark的发展,同时希望有更多的大数据同行和笔者一起进行大数据技术的沟通交流,相互学习和探讨。

Leave a comment

随时欢迎您 联系我们