原标题:为何Spark在编程界越来越吃香?Spark将成为数据科学家的统一平台
统计科学家使用交互式的统计工具(比如R)来回答数据中的问题,获得全景的认识。与之相比,数据工程师则更像一名程序员,他们在服务器上编写代码,创建和应用机器学习模型,熟悉C++和Java等系统级语言,经常需要和企业级数据中心的某些组件打交道,比如Hadoop。
而有的数据科学家专注于更细的领域,就像精通R但从未听说过Python或者scikit-learn(反之亦然),即便两者都提供了丰富的统计库。(文末附有惊喜!)
Spark相比其他工具
如果可以提供一种统一的工具,运行在统一的架构,用统一的语言编程,并可以同时满足统计科学家和数据工程师的需求,那该多好啊。难道为了研究数据,我就必须去学一种像Python或R的语言?我一直使用传统的数据分析工具,难道为了应对大规模计算,就必须去懂MapReduce?正是统计工具的不完美造就了这种局面:
R提供了一个丰富的统计分析和机器学习的解释器。但R难以在分布式条件下执行数据的分析和清洗,以便开展其所擅长的数据分析,也不以一种主流的开发语言为人所知。
Python是-种通用的编程语言,也不乏出色的第三方数据分析库(像Pandas和scikit-learn),但Python也有和R一样的缺陷:只能局限在处理单机能负载的数据量。
在经典的MapReduce计算框架上开发分布式的机器学习算法是可行的(参考Mahout),但程序员需要从零开始,更别说移植复杂计算的难度。
为降低复杂计算移植到MapReduce的难度,Crunch 提供一个简单的、傻瓜式的Java API,但MapReduce天生决定了它在迭代计算方面是低效的,尽管大多数机器学习算法都需要迭代计算。
Spark的优势
Spark是一个超有潜力的通用数据计算平台,无论是对统计科学家还是数据工程师。大部分人讨论到Spark时,总是注意到将数据驻留内存以提高计算效率的方面(相对MapReduce),Spark 拥有许多的特征,使之真正成为一个融合统计科学和数据工程的交叉点:
Spark附带了一个机器学习库MLib,虽然只是在初始阶段。
Spark是用Scala语言编写的,运行在Java虚拟机上,同时也提供像R和Python的命令行解释器。
对Java程序员,Scala 的学习曲线是比较陡峭的,但所幸Scala可以兼容一切的Java库。
Spark的RDD(弹性分布式数据集),是Crunch开发者熟知的--种数据结构。
Spark模仿了Scala 的集合计算API,对Java和Scala开发者来说耳熟能详,而Python开发者也不难上手,而Scala对统计计算的支持也不错。
Spark和其底层的Scala语言,并不只是为机器学习而诞生的,除此之外,像数据访问、日志ETL和整合都可以通过API轻松搞定。就像Python,你可以把整个数据计算流程搬到Spark平台.上来,而不仅仅是模型拟合和分析。
在命令行解释器中执行的代码,和编译后运行的效果相同。而且,命令行的输入可以得到实时反馈,你将看到数据透明地在集群间传递与计算。
Spark和MLib还有待完善整个项目有不少bug,效率也还有提升的空间,和YARN的整合也存在问题。Spark还没办法提供像R那样丰富的数据分析函数。但Spark已然是世界上最好的数据平台,足以让来自任何背景的数据科学家侧目。
Stack Overflow问题的自动标注
Stack Overflow是一个著名的软件技术问答平台,在上面提的每个问题有可能被打上若干个短文本的标签,比如java或者sql,我们的目标在于建立一.套系统,使用ALS推荐算法,为新问题的标签提供预测和建议。从推荐系统的角度,你可以把问题想象成user,把标签想象成item。返回搜狐,查看更多
责任编辑: