专栏首页数据科学与人工智能【Spark研究】如何用 Spark 快速开发应用?

【Spark研究】如何用 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,如下:

textfile = sc.textFile(“hello.txt”)

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

textfile.count():

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

textFile.filter(lambda line: "MapR" in line)

参照“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,在更短的时间里你可以做更多的事。你和你的开发人员可以畅游在你们的大数据思想中。

本文分享自微信公众号 - 数据科学与人工智能(DS_AI_shujuren)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-11-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Spark框架】运用Spark加速实时数据分析

    Apache Hadoop是一个成熟的开发框架,其连接着庞大的生态系统,并且得到了Cloudera、Hortonwork、Yahoo这些卓越机构的支持与贡献,并...

    陆勤_数据人网
  • 【Spark研究】用Apache Spark进行大数据处理第一部分:入门介绍

    什么是Spark Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于20...

    陆勤_数据人网
  • 【Spark研究】用Apache Spark进行大数据处理之入门介绍

    什么是Spark Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于20...

    陆勤_数据人网
  • Apache Spark:承诺与挑战

    如果您正在寻找处理大量数据的解决方案,那么现在有很多选择。根据您的使用情况以及您希望对数据执行的操作类型,您可以选择各种各样的数据处理框架,如Apache Sa...

    Hans362
  • Spark学习之基础相关组件(1)

    Spark学习之基础相关组件(1) 1. Spark是一个用来实现快速而通用的集群计算的平台。 2. Spark的一个主要特点是能够在内存中进行计算,因而更快。...

    王小雷
  • Spark Streaming 的玫瑰与刺

    说人话:其实就是讲Spark Streaming 的好处与坑。好处主要从一些大的方面讲,坑则是从实际场景中遇到的一些小细节描述。

    用户2936994
  • Hello Spark! | Spark,从入门到精通

    欢迎阅读美图数据技术团队的「Spark,从入门到精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,...

    美图数据技术团队
  • 简单聊聊 Spark 的诞生史

    这篇文章是关于 Spark 的,说实话,我是很犹豫写这篇文章的,因为 Spark 在国内非常火,大牛不计其数并且相关的文章也数不胜数,要找准一个有趣的角度去畅抒...

    哒呵呵
  • Spark源码阅读的正确打开方式

    Spark发展至今,应该说已经非常成熟了。是大数据计算领域不得不学习的框架。尤其是Spark在稳定性和社区发展的成熟度方面,吊打其他的大数据处理框架。

    王知无
  • Apache Spark:大数据时代的终极解决方案

    Apache Spark是基于Hadoop MapReduce的数据分析引擎,它有助于快速处理大数据。它克服了Hadoop的限制,正在成为最流行的大数据分析框架...

    不高不富不帅的陈政_

扫码关注云+社区

领取腾讯云代金券