文档章节

Spark入门必学:预测泰坦尼克号上的生还情况

云栖运营小编
 云栖运营小编
发布于 2017/01/13 17:41
字数 1345
阅读 49
收藏 0

第一次听闻Spark是2013年年末,当时笔者对Scala(Spark的编程语言)感兴趣。一段时间之后做了一个有趣的数据科学项目,试图预测泰坦尼克号上的生还情况(Kaggle竞赛项目,通过使用机器学习预测泰坦尼克号上哪些乘客具备更高的生还可能性)。通过该项目可以更深入地理解Spark的概念和编程方式,强推荐想要精进Spark的开发人员拿该项目入手。

如今Spark在众多互联网公司被广泛采用,例如Amazon、eBay和Yahoo等。许多公司拥有运行在上千个节点的Spark集群。根据Spark FAQ,已知最大的集群有着超过8000个节点。不难看出,Spark是一项值得关注和学习的技术。

本文通过一些实际案例和代码示例对Spark进行介绍,案例和代码示例部分出自Apache Spark官方网站,也有一部分出自《Learning Spark - Lightning-Fast Big Data Analysis》一书。

什么是 Apache Spark? 初步介绍

Spark是Apache的一个项目,被宣传为"闪电般快速集群计算",它拥有繁荣的开源社区,同时也是目前最活跃的Apache项目。

Spark提供了一个更快更通用的数据处理平台。与Hadoop相比,运行在内存中的程序,Spark的速度可以提高100倍,即使运行在磁盘上,其速度也能提高10倍。去年,Spark在处理速度方面已经超越了Hadoop,仅利用十分之一于Hadoop平台的机器,却以3倍于Hadoop的速度完成了100TB数量级的Daytona GreySort比赛,成为了PB级别排序速度最快的开源引擎

通过使用Spark所提供的超过80个高级函数,让更快速地完成编码成为可能。大数据中的"Hello World!"(编程语言延续下来一个惯例):Word Count程序示例可以说明这一点,同样的逻辑使用Java语言编写MapReduce代码需要50行左右,但在Spark(Scala评议实现)中的实现非常简单:

sparkContext.textFile("hdfs://..."). flatMap(line => line.split(" ")). map(word => (word, 1)). reduceByKey(_ + _).saveAsTextFile("hdfs://...")

学习如Apache Spark的另一个重要途径是使用交互式shell (REPL),使用REPL可以交互显示代码运行结果,实时测试每行代码的运行结果,无需先编码、再执行整个作业,如此便能缩短花在代码上的工作时间,同时为即席数据分析提供了可能。

 

Spark的其他主要功能包括:

  • 目前支持Scala,Java和Python三种语言的 API,并正在逐步支持其他语言(例如R语言);
  • 能够与Hadoop生态系统和数据源(HDFS,Amazon S3,Hive,HBase,Cassandra等)完美集成;
  • 可以运行在Hadoop YARN或者Apache Mesos管理的集群上,也可以通过自带的资源管理器独立运行。

Spark 内核之上还有许多强大的、更高级的库作为补充,可以在同一应用程序中直接使用,目前有SparkSQL,Spark Streaming,MLlib(用于机器学习)和GraphX这四大组件库,本文将对Spark Core及四大组件库进行详细介绍。当然,还有额外其它的Spark库和扩展库目前也处于开发中。

c517c6f51bd3e1f425e4c956c8a1b54af65bebe5

Spark Core

Spark Core是大规模并行计算和分布式数据处理的基础引擎。它的职责有:

  • 内存管理和故障恢复;
  • 调度、分发和监控集群上的作业;
  • 与存储系统进行交互。

Spark引入了RDD(弹性分布式数据集)的概念,RDD是一个不可变的容错、分布式对象集合,支持并行操作。RDD可包含任何类型的对象,可通过加载外部数据集或通过Driver程序中的集合来完成创建。

RDD支持两种类型的操作:

  • 转换(Transformations)指的是作用于一个RDD上并会产生包含结果的新RDD的操作(例如map, filter, join, union等)
  • 动作(Actions)指的是作用于一个RDD之后,会触发集群计算并得到返回值的操作(例如reduce,count,first等)

Spark中的转换操作是“延迟的(lazy)”,意味着转换时它们并不立即启动计算并返回结果。相反,它们只是“记住”要执行的操作和待执行操作的数据集(例如文件)。转换操作仅当产生调用action操作时才会触发实际计算,完成后将结果返回到driver程序。这种设计使Spark能够更有效地运行,例如,如果一个大文件以不同方式进行转换操作并传递到首个action操作,此时Spark将只返回第一行的结果,而不是对整个文件执行操作。

阅读全文请点击:http://click.aliyun.com/m/9371/

© 著作权归作者所有

云栖运营小编
粉丝 7
博文 98
码字总数 52676
作品 0
朝阳
运营/编辑
私信 提问
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark

Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机、平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题。图计算正在被广泛地...

Spark亚太研究院
2014/08/29
1K
0
18小时内掌握Spark,全面提升Spark技能!

伴随着大数据相关技术和产业的逐步成熟,继Hadoop之后,Spark技术以其无可比拟的优势,发展迅速,将成为替代Hadoop的下一代云计算、大数据核心技术。   Spark是基于内存,是云计算领域的继...

Spark亚太研究院
2014/06/12
88
0
微软发布 .Net for Apache Spark :用什么语言开发大数据都可以

4 月 24 日,在 Spark+AI 峰会 上,我们很高兴地宣布推出 .NET for Apache Spark。Spark 是一种流行的开源分布式处理引擎,用于分析大型数据集。Spark 可用于处理批量数据、实时流、机器学习...

开源大数据EMR
05/22
0
0
学途无忧网的视频怎么破解下载?学途无忧网淘宝可以买吗?

学途无忧网的视频怎么破解下载?学途无忧网淘宝可以买吗? 我想下载这几集,或者低价购买这几集 课时7:SparkSQL java操作mysql数据 课时8:Spark统计用户的收藏转换率 课时9:Spark梳理用户...

天池番薯
2016/12/19
1K
3
新手入门:Spark 部署实战入门

Spark简介 整体认识 Apache Spark是一个围绕速度、易用性和复杂分析构建的大数据处理框架。最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一。 Spark在整...

景龙Edward
2016/07/05
16.2K
5

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
14
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部