如何用 Spark 快速开发应用?

如果你还没有仔细研究过 Spark (或者还不知道 Spark 是什么),那么本文很好地介绍了 Spark。描述了基本的数据结构、shell ,并对其包含的 API 进行了概述。


你已经知道的Hadoop是部署大规模大数据应用的最好的,并兼具高成本效益的平台之一。但当Hadoop与Apache Spark提供的执行力相结合的时候会更加强大。虽然Spark可在许多大数据平台上使用,但将其部署在有效的Hadoop平台上会更好,你可以使用已知工具快速构建大型应用。

 

什么是Apache Spark?

Apache Spark是处理大量数据的通用引擎。它是设计用来允许开发者快速部署大数据应用的。Spark的特点是它的弹性分布式数据集(RDDs)。数据结构既可以存在内存中也可以在磁盘上。将对象保存于内存中将带来可观的性能提升,因为应用程序无需将时间浪费在从磁盘中获取数据。

如果你有大的集群,你的数据可能传遍数百个甚至上千个节点。Apache Spark不仅快而且可靠。Spark的设计具有容错性,它能够从诸如节点或进程错误所导致的数据损失中恢复。

你可以在任何文件系统中使用Apache Spark,但是通过Hadoop,你将得到一个可靠的,分布式的文件系统,作为你的大数据应用的基础。

大数据应用程序开发的效率的另一个主要来源是人的因素。开发工具使得工作比它的现状更加复杂,但Apache Spark跳出了程序员的方式。在使用Apache Spark快速地应用开发中有两个关键:shell 和 API。

 

Shell

脚本语言的最大好处之一是它们的互动式 shell。利用各种方式回到早起的 Unix 时代,shell 使得你快速地尝试你的想法而不会被写/测试/编译/调试的循环放缓速度。

有想法?现在你就可以试试并且看看发生了什么。想法很简单,就是使你在本地机器上更有效率。当你使用大数据集群后,静观其变吧。

Spark提供了Scala或者Python的Shell。你可以选择任意一个你所习惯的 shell。类似Unix的系统中,你可以在Spark的目录 ./bin/pyspark下找到Python的shell,在./bin/sparkshell下找到Scala的shell。

一旦你找到了shell并且运行起来,你就可以将数据导入RDDs并且对这些数据执行所有类型的操作,例如统计行数或者找到列表中的第一个项目。操作分为两种:一种是转换,它在一个集合中创建新的列表;另一种是动作,它返回值。你也可以写自定义函数并将它们应用到你的数据。这些是为你创建RDD对象的Python方法。

例如,向Spark导入一个文本文件作为在Python的shell中的RDD,如下:

这是一个统计行数的动作:

这是一个返回含有“MapR”行的列表转换:

参照“Spark开发指南”可得到更多的信息。

 

API

尽管Spark本身是用Scala写的,但你可以用一些API使得你的工作容易些。如果你用过Python或者Scala的shells,那么你就已经在用这些语言的API了。你需要做的就是将你的程序保存为脚本而仅需很少的修改。

如果你在寻找构建更加健壮的程序,你可以使用Java API。即使你已经用Java完全实现了你的程序,你仍然可以在shell中勾画出的你的想法以确保在将其部署到你的集群之前你的算法是正确的。

Spark发行了一些库:Spark SQL,Spark Streaming(建立在Spark上的实时计算框架),the MLlib machine learning library(机器学习库)和GraphX。

你可以通过使用一些易用的API来构建复杂的应用并且实时部署它们。你甚至可以以混合和匹配技术来构建应用程序或者大数据管道,例如从机器学习的结果生成图的应用。由 Hadoop平台支持的 Apache Spark  提供了强大和灵活性。

通过完全支持Spark栈的MapR分布,对程序员很容易地实时创建一个复杂的大数据应用是可能的,就像批处理数据……

 

总结

世界变化快。你的业务所积累的数据也在不断增长,你需要一种方法来快速倒腾数据。当你能够构建大数据集群并尝试去筛选数据时,你需要正确的工具–设计用来快速处理大量数据的工具。

而运行在Hadoop上的Spark可以做到这点,它的最大优势在于提高开发人员的生产力上。通过使用Spark上的Scala和Python,在更短的时间里你可以做更多的事。你和你的开发人员可以畅游在你们的大数据思想中。

1 3 收藏 评论

关于作者:EluQ

南京土著,程序员。(新浪微博:@EluQ) 个人主页 · 我的文章 · 11

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部