Scala和Spark大数据分析 函数式编程、数据流和机器学习 [Scala and Spark for Big Data Analytics: Explore th]
用SparkR和PySparkAPI来开发Spark应用,用Zeppelin进行交互式数据分析,用Alluxio进行内存数据处理。
- 作者雷扎尔·卡里姆(Md.,Rezaul,Karim),斯里达尔·阿拉(Sridhar Alla) 著,史跃东 译
- 出版社清华大学出版社
- 发行日期2020-06-01
- 标签大数据书籍 Big data booksScala Spark大数据分析 函数式编程 数据流 机器学习
用SparkR和PySparkAPI来开发Spark应用,用Zeppelin进行交互式数据分析,用Alluxio进行内存数据处理。
编辑推荐
近年来,Scala得以迅速流行,在数据科学和分析领域势头更盛。基于Scala的Spark被广泛应用于生产环境,海量数据的分析可瞬间完成!本书全面系统地介绍Spark应用开发的面向对象和函数式编程概念,指导你用Scala编写强大的Spark程序。本书瞄准最前沿的技术,包含Spark SQL、结构流、graphX和Spark MLib等所有API。本书面向想利用Scala和Spark执行数据分析的人士。
? 本书包含大量精妙的、紧贴实用的大数据分析问题,并说明如何使用Hadoop生态系统上的Scala解决这些问题。
? 一本十分有用的大块头书籍,它呈现概念,并透彻地讲述如何实现概念。
? 本书内容丰富,讨论了PySpark、SparkR、Alixuio和Zeppelin,包罗一切。
? 学习将函数式编程和面向对象概念融为一体的精妙Scala类型系统。
? 处理大范围的应用,从简单的批处理、流处理乃至机器学习
? 分析最常见的用例和一些复杂用例,使用Spark执行大规模数据分析
内容简介
主要内容
◆ 理解Scala的面向对象和函数式编程概念
◆ 深入理解Scala的集合API
◆ 学习RDD和数据帧等Spark核心概念
◆ 使用Spark SQL和GraphX分析结构化与非结构化数据
◆ 使用Spark结构化流来开发具备可扩展性和容错能力的流式应用
◆ 学习分类、回归、降维和推荐系统等机器学习最佳实践,以便使用Spark ML和Spark MLlib中的流行算法来建立预测模型
◆ 建立聚类模型,以便聚类大量数据
◆ 理解Spark应用的调优、调试和监控技术
◆ 使用独立服务器模式、Mesos和YARN模式在集群上部署Spark应用
作者简介
Md. Rezaul Karim 是德国Fraunhofer FIT的研究学者,也是德国亚琛工业大学的博士学位研究生预科生。他拥有计算机科学的学士与硕士学位。在加盟Fraunhofer FIT之前,他曾作为研究员任职于爱尔兰的数据分析深入研究中心。更早之前,他还担任过三星电子公司全球研究中心的首席工程师;该研究中心分布于韩国、印度、越南、土耳其以及孟加拉。再早之前,他还在韩国庆熙大学的数据库实验室担任过助理研究员,在韩国的BMTech21公司担任过研发工程师,在孟加拉国的i2软件技术公司担任过软件工程师。
Karim拥有超过8年的研发领域工作经验,并在如下算法和数据结构领域具有深厚的技术背景:C/C++、Java、Scala、R、Python、Docker、Mesos、Zeppelin、Hadoop以及MapReduce,并深入学习了如下技术:Spark、Kafka、DC/OS、DeepLearning4j以及H2O-Sparking Water。他的研究兴趣包括机器学习、深度学习、语义网络、关联数据(Linked Data)、大数据以及生物信息学。同时,他还是Packt出版社出版的以下两本书籍的作者:
● Large-Scale Machine Learning with Spark
● Deep Learning with TensorFlow
Sridhar Alla是一位大数据专家,他曾帮助大大小小的诸多公司解决各种复杂的问题,例如数据仓库、数据治理、安全、实时数据处理、高频率的交易系统以及建立大规模的数据科学实践项目等。他也是敏捷技术的实践者,是一位获得认证的敏捷DevOps实践者和实施者。他在美国网域存储公司,以存储软件工程师的身份开始了自己的职业生涯。然后成为位于波士顿的eIQNetworks公司的CTO,该公司是一家网络安全公司。在他的履历表中,还包括曾担任位于费城的Comcast公司的数据科学与工程总监。他是很多会议或者活动(如Hadoop World、Spark峰会等)的热心参与者,在多项技术上提供面授/在线培训。他在美国商标专利局(US PTO)也有多项专利技术,内容涉及大规模计算与分布式系统等。他还持有印度尼赫鲁科技大学计算机科学方向的学士学位。目前,他和妻子居住在新泽西州。
Alla在Scala、Java、C、C++、Python、R以及Go语言上有超过18年的编程经验,他的技术研究范围也扩展到Spark、Hadoop、Cassandra、HBase、MongoDB、Riak、Redis、Zeppelin、Mesos、Docker、Kafka、ElasticSearch、Solr、H2O、机器学习、文本分析、分布式计算以及高性能计算等领域。
精彩书评
技术含量极高的优秀书籍!——Amazon Customer
一本宝典!我昨日买了本书,到此刻已经品读过一些章节,并大致浏览了其他章节。本书包罗了学习Spark大数据分析所需的一切知识,详细介绍Scala编程、Spark基本操作、多种机器学习算法(分类、回归、聚类、推荐系统)、NLP、图形分析、结构化流,当然还有Spark的其他一些高级主题,如调优、调试和集群部署。
有趣的是,它还讨论了PySpark、SparkR、Alluxio和Zeppelin。总之,它包含我数月来一直在寻找的一切知识要点,堪称我的良师益友。
重量级作品!——Md Ashiqur Rahman
这是一本优秀书籍,可引导你使用Scala和Spark开发出实用的数据处理应用程序。本书介绍的技术都是更新的,涵盖所有API,如Spark SQL、结构化流、GraphX和Spark MLlib等。
Spark ML更佳读物!——Ariel Herrera
本书细腻地阐释每个概念,列举丰富的示例,启发性强,令我爱不释手。这是一本大部头书籍,内容精辟,足以满足你的学习要求,你可根据自己的需要按任意顺序阅读。
如果你是Java领域的程序员,我强烈向你推荐本书!——Amazon Customer
我是一名Scala爱好者,也是专业的Java程序员,目前正在开发一个大数据栈项目。我已经读完了整本书。如果你也在开发Java项目,想用函数方式编写Java代码来解决大数据问题,我向你强烈推荐本书。Scala极大地简化了Spark处理,阅读本书,你将汲取大量Scala和Spark知识营养。本书的讲解细致入微,点明很多至关重要、紧贴实用的大数据分析问题,也指出如何在Hadoop生态系统中用Scala轻松地解决这些问题。本书不仅介绍概念,还具体阐述如何实现这些概念,可谓字字珠玑。两位作者独具匠心,感谢他们付出的辛勤劳动,感谢他们为广大读者奉献了这本精品书籍。
目录
第1章 Scala简介 1
1.1 Scala的历史与设计目标 2
1.2 平台与编辑器 2
1.3 安装与创建Scala 3
1.3.1 安装Java 3
1.3.2 Windows 4
1.3.3 macOS 6
1.4 Scala:可扩展的编程语言 9
1.4.1 Scala是面向对象的 9
1.4.2 Scala是函数式的 9
1.4.3 Scala是静态类型的 9
1.4.4 在JVM上运行Scala 10
1.4.5 Scala可以执行Java代码 10
1.4.6 Scala可以完成并发与同步处理 10
1.5 面向Java编程人员的Scala 10
1.5.1 一切类型都是对象 10
1.5.2 类型推导 11
1.5.3 Scala REPL 11
1.5.4 嵌套函数 13
1.5.5 导入语句 13
1.5.6 作为方法的操作符 14
1.5.7 方法与参数列表 15
1.5.8 方法内部的方法 15
1.5.9 Scala中的构造器 16
1.5.10 代替静态方法的对象 16
1.5.11 特质 17
1.6 面向初学者的Scala 19
1.6.1 你的第一行代码 20
1.6.2 交互式运行Scala! 21
1.6.3 编译 21
1.7 本章小结 22
第2章 面向对象的Scala 23
2.1 Scala中的变量 24
2.1.1 引用与值不可变性 25
2.1.2 Scala中的数据类型 26
2.2 Scala中的方法、类和对象 28
2.2.1 Scala中的方法 28
2.2.2 Scala中的类 30
2.2.3 Scala中的对象 30
2.3 包与包对象 41
2.4 Java的互操作性 42
2.5 模式匹配 43
2.6 Scala中的隐式 45
2.7 Scala中的泛型 46
2.8 SBT与其他构建系统 49
2.8.1 使用SBT进行构建 49
2.8.2 Maven与Eclipse 50
2.8.3 Gradle与Eclipse 51
2.9 本章小结 55
第3章 函数式编程概念 56
3.1 函数式编程简介 57
3.2 面向数据科学家的函数式Scala 59
3.3 学习Spark为何要掌握函数式编程和Scala 59
3.3.1 为何是Spark? 59
3.3.2 Scala与Spark编程模型 60
3.3.3 Scala与Spark生态 61
3.4 纯函数与高阶函数 62
3.4.1 纯函数 62
3.4.2 匿名函数 64
3.4.3 高阶函数 66
3.4.4 以函数作为返回值 70
3.5 使用高阶函数 71
3.6 函数式Scala中的错误处理 72
3.6.1 Scala中的故障与异常 73
3.6.2 抛出异常 73
3.6.3 使用try和catch捕获异常 73
3.6.4 finally 74
3.6.5 创建Either 75
3.6.6 Future 76
3.6.7 执行任务,而非代码块 76
3.7 函数式编程与数据可变性 76
3.8 本章小结 77
第4章 集合API 78
4.1 Scala集合API 78
4.2 类型与层次 79
4.2.1 Traversable 79
4.2.2 Iterable 80
4.2.3 Seq、LinearSeq和IndexedSeq 80
4.2.4 可变型与不可变型 80
4.2.5 Array 82
4.2.6 List 85
4.2.7 Set 86
4.2.8 Tuple 88
4.2.9 Map 89
4.2.10 Option 91
4.2.11 exists 94
4.2.12 forall 96
4.2.13 filter 96
4.2.14 map 97
4.2.15 take 97
4.2.16 groupBy 98
4.2.17 init 98
4.2.18 drop 98
4.2.19 takeWhile 98
4.2.20 dropWhile 99
4.2.21 flatMap 99
4.3 性能特征 100
4.3.1 集合对象的性能特征 100
4.3.2 集合对象的内存使用 102
4.4 Java互操作性 103
4.5 Scala隐式的使用 104
4.6 本章小结 108
第5章 狙击大数据——Spark加入战团 109
5.1 数据分析简介 109
5.2 大数据简介 114
5.3 使用Apache Hadoop进行分布式计算 116
5.3.1 Hadoop分布式文件系统(HDFS) 117
5.3.2 MapReduce框架 122
5.4 Apache Spark驾到 125
5.5 本章小结 131
第6章 开始使用Spark——REPL和RDD 132
6.1 深入理解Apache Spark 132
6.2 安装Apache Spark 136
6.3 RDD简介 142
6.4 使用Spark shell 147
6.5 action与transformation算子 150
6.6 缓存 162
6.7 加载和保存数据 165
6.7.1 加载数据 165
6.7.2 保存RDD 166
6.8 本章小结 166
第7章 特殊RDD操作 167
7.1 RDD的类型 167
7.2 聚合操作 178
7.3 分区与shuffle 187
7.3.1 分区器 188
7.3.2 shuffle 190
7.4 广播变量 193
7.5 累加器 196
7.6 本章小结 199
第8章 介绍一个小结构——Spark SQL 200
8.1 Spark SQL与数据帧 200
8.2 数据帧API与SQL API 203
8.3 聚合操作 214
8.4 连接 226
8.5 本章小结 237
第9章 让我流起来,Scotty——Spark Streaming 238
9.1 关于流的简要介绍 238
9.2 Spark Streaming 243
9.3 离散流 249
9.4 有状态/无状态转换 256
9.5 检查点 257
9.6 与流处理平台(Apache Kafka)的互操作 261
9.7 结构化流 265
9.8 本章小结 269
第10章 万物互联——GraphX 270
10.1 关于图论的简要介绍 270
10.2 GraphX 275
10.3 VertexRDD和EdgeRDD 277
10.4 图操作 280
10.5 Pregel API 284
10.6 PageRank 290
10.7 本章小结 291
第11章 掌握机器学习Spark MLlib
和ML 292
11.1 机器学习简介 292
11.2 Spark机器学习API 298
11.3 特征提取与转换 299
11.4 创建一个简单的pipeline 308
11.5 无监督机器学习 309
11.6 分类 314
11.7 本章小结 330
第12章 贝叶斯与朴素贝叶斯 332
12.1 多元分类 332
12.2 贝叶斯推理 338
12.3 朴素贝叶斯 339
12.4 决策树 349
12.5 本章小结 354
第13章 使用Spark MLlib对数据进行聚类分析 355
13.1 无监督学习 355
13.2 聚类技术 357
13.3 基于中心的聚类(CC) 358
13.4 分层聚类(HC) 366
13.5 基于分布的聚类(DC) 367
13.6 确定聚类的数量 372
13.7 聚类算法之间的比较分析 373
13.8 提交用于聚类分析的Spark作业 374
13.9 本章小结 374
第14章 使用Spark ML进行文本分析 376
14.1 理解文本分析 376
14.2 转换器与评估器 378
14.3 分词 381
14.4 StopWordsRemover 383
14.5 NGram 385
14.6 TF-IDF 386
14.7 Word2Vec 390
14.8 CountVectorizer 392
14.9 使用LDA进行主题建模 393
14.10 文本分类实现 395
14.11 本章小结 400
第15章 Spark调优 402
15.1 监控Spark作业 402
15.2 Spark配置 417
15.3 Spark应用开发中的常见错误 420
15.4 优化技术 425
15.5 本章小结 434
第16章 该聊聊集群了——在集群环境中部署Spark 435
16.1 集群中的Spark架构 435
16.2 在集群中部署Spark应用 444
16.3 本章小结 464
第17章 Spark测试与调试 465
17.1 在分布式环境中进行测试 465
17.2 测试Spark应用 468
17.3 调试Spark应用 483
17.4 本章小结 495
第18章 PySpark与SparkR 496
18.1 PySpark简介 496
18.2 安装及配置 497
18.3 SparkR简介 517
18.4 本章小结 527
第19章 高级机器学习最佳实践 529
19.1 机器学习最佳实践 529
19.2 ML模型的超参调整 536
19.3 一个Spark推荐系统 548
19.4 主题建模——文本聚类的最佳实践 555
19.5 本章小结 568
附录A 使用Alluxio加速Spark 569
附录B 利用Apache Zeppelin进行交互式数据分析 583
前言/序言
前 言
随着数据量的持续膨胀,企业决策也变得日益复杂。因此,如果你还想使用传统的分析方法来洞察数据从而推动企业前进的话,那么,不断增长的数据将给你带来巨大障碍。现在,大数据涉及的领域太广泛了,它与各种框架之间存在千丝万缕的关系。以至于大数据的定义也与这些框架能够处理的范围产生了联系。无论你在检查来自百万访问者的点击流数据,从而优化在线广告的投放位置,还是过滤数十亿的事务数据,以便鉴定危险或欺诈信息,这些行为都需要高级的分析技术,例如机器学习和图运算,从而能在远超以往的大量数据中进行自动洞察与分析操作。
作为大数据处理、分析以及跨越学术界和工业界的数据科学等领域的事实上的标准,Apache Spark提供了机器学习和图运算程序包,从而能让企业基于高可扩展性及集群化的计算机设备,轻松地处理诸多复杂问题。不仅如此,Spark还允许你使用Scala语言来编写分布式程序,就像为Spark编写普通程序那样简单。Spark为ETL数据传输带来了巨大的性能提升,也能让那些原来的MapReduce程序员们从Hadoop复杂的编程模型中部分解脱出来。
在《Scala和Spark大数据分析 函数式编程、数据流和机器学习》中,我们将竭力为你带来基于Spark和Scala的最先进数据分析技术,包括机器学习、图运算、流处理以及Spark SQL。当然,也包括MLlib、ML、SQL、GraphX以及其他程序库。
我们先从Scala开始,然后逐步进入Spark部分,最后将涵盖基于Spark和Scala的大数据处理的一些高级主题。在附录中,将扩展你的Scala知识,介绍SparkR、PySpark、Apache Zeppelin以及基于内存的Alluxio等。《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的内容并不需要你逐章完整阅读,你可以根据自己的兴趣,随意跳跃性翻阅感兴趣的章节。
祝你阅读愉快!
内容简介
第1章“Scala简介”将基于Scala语言使用Spark的API,从而教给你大数据处理技术。Spark本身就是用Scala编写的,因此,我们很自然地以Scala的简介作为《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的开始。简介包括Scala的历史、设计目的,以及如何在Windows、Linux以及macOS上安装Scala。此后,我们将探讨Scala的Web框架。再后对Java和Scala做对比分析。最后将研究Scala程序设计从而开始使用Scala。
第2章“面向对象的Scala”讲述面向对象的程序设计(OOP)范例,提供了一个全新的抽象层。简单来说,该章描述面向对象程序设计语言的一些强大之处:可发现性、模块性和可扩展性。尤其将讲述如何处理Scala中的变量、方法、类和对象。还讨论包、包对象、特征以及特征的线性化。当然,还有与Java的互操作性。
第3章“函数式编程概念”将列出Scala中函数式编程的基本概念。具体而言,我们将学习如下几个议题,Scala为何是数据科学的兵工厂,为何学习Spark范例、纯函数以及高阶函数(Higher-Order Function,HOF)很重要。同时将展示在真实世界中使用HOF的用户案例。然后,我们将了解如何使用Scala的标准库函数,来在集合之外处理高阶函数中的异常。最后,将学习函数式Scala如何影响对象的可变性。
第4章“集合API”将介绍一个会影响大部分Scala用户的特性——集合API。该特性很强大且颇具弹性。我们将展示Scala集合API的能力,以及如何有序地使用它来处理不同的数据类型,并解决各种复杂问题。在该章中,我们将探讨Scala的集合API、类型以及层级,还有一些性能方面的议题,与Java的互操作性,还有Scala的隐式转换。
第5章“狙击大数据——Spark加入战团”将简要描述数据分析与大数据。将讨论大数据带来的挑战如何被分布式计算以及函数式编程所处理。我们将介绍谷歌的MapReduce、Apache Hadoop和Apache Spark。我们也将了解到为何Apache Spark会首先被创建出来;面对大数据分析与处理的挑战,Apache Spark又能带来怎样的价值。
第6章“开始使用Spark——REPL和RDD”将介绍Spark的工作原理,然后介绍RDD(Apache Spark的基本抽象概念),讲述它们是怎样的分布式集合,以及如何使用类似Scala的API进行操作。我们也将了解Apache Spark在部署方面的一些选项,以及如何以Spark shell方式在本地运行。我们也将深入学习Apache Spark的一些内部原理,例如RDD的含义、DAG和RDD的血统机制、transformation算子以及action算子。
第7章“特殊RDD操作”将关注RDD是如何被冗余并满足各种不同需求的,以及RDD如何提供新功能。不仅如此,我们还将了解Spark提供的其他有用对象,如广播变量和累加器(accumulator)。我们也将学习聚合技术shuffle。
第8章“介绍一个小结构——Spark SQL”将讲解如何使用Spark分析结构化数据,Spark是如何将结构化数据作为RDD的高阶抽象来处理的,以及Spark SQL的API是如何让查询结构化数据变得简单并足够健壮。还将介绍数据集(dataset),讲述数据集、DataFrame以及RDD之间的区别。也将讨论如何使用DataFrame API,从而利用连接操作和窗口函数执行复杂的数据分析。
第9章“让我流起来,Scotty——Spark Streaming”将讲述如何使用Spark Streaming,并利用Spark API来高效地处理流式数据。不仅如此,在该章中,还将介绍处理实时数据流的不同方法,列举一个真实的案例来演示来自Twitter的信息是如何被使用和处理的。我们也将看到与Apache Kafka的集成。还将看到结构化的流数据,它们将能为应用提供实时查询功能。
第10章“万物互联——GraphX”旨在使你了解到,真实世界中的许多问题都通过图运算进行建模并加以解决。我们将看到基于Facebook的例子,分析如何使用图论,其中包含Apache Spark的图运算程序库GraphX、VertexRDD、EdgeRDD、图操作、aggregateMessages、triangleCount、Pregel API以及用户案例(如PageRank算法等)。
第11章“掌握机器学习——Spark MLlib和ML”旨在提供统计机器学习的一些概念性介绍。我们将关注Spark的机器学习API(称为Spark MLlib和ML)。接下来将讨论如何使用决策树和随机森林算法解决分类问题,以及如何使用线性回归算法解决回归问题。你也将看到,在训练分类模型前,我们是如何在特征提取中使用OneHotEncoder和降维算法来获得好处的。在该章的最后,还将一步步地展示一个例子,来讲述怎样开发一个基于协同过滤的电影推荐系统。
第12章“贝叶斯与朴素贝叶斯”讲述大数据与机器学习。大数据与机器学习已经成为一个激进的组合,给研究领域(无论是学术领域还是工业领域)带来巨大影响。大数据给机器学习、数据分析工具以及算法都带来了巨大挑战,因为它们都需要发现真正的价值。但是,基于现有的这些海量数据集来预测未来从来都不是容易的事情。在该章中,我们将深入研究机器学习,并找出如何使用简单但强大的方法,来创建一个具备可扩展性的分类模型,同时将介绍相关的概念,例如多元分类、贝叶斯分类、朴素贝叶斯、决策树,以及朴素贝叶斯与决策树之间的对比分析。
第13章“使用Spark MLlib对数据进行聚类分析”将介绍常见的聚类算法,并通过大量实例,让你掌握这一机器学习领域中被广泛应用的技术。
第14章“使用Spark ML进行文本分析”将简要讲解如何使用Spark ML进行文本分析。文本分析是机器学习领域中一个很宽广的区域,它在很多用户场景下都极为有用,例如情感分析、聊天机器人、垃圾邮件检测、自然语言处理(NLP)以及其他很多场景。我们将学到如何使用Spark进行文本分析,该用例来自包含10 000个样例集合的Twitter数据,我们要对其进行文本分类。我们也将学习LDA(隐含狄利克雷分布),这是一项颇为流行的技术,它能从文档中生成对应的主题而不必知晓真实的文档内容,然后我们会基于这些Twitter数据实施文本分类,看一下具体的结果会是怎样的。
第15章“Spark调优”深入探究Apache Spark的内部机制,我们会觉得在使用Spark时,感觉就像是在使用另一个Scala集合一样,但不要忘了,Spark实际上是在一个集群中运行的。因此,该章将关注如何监控Spark任务,如何进行Spark配置,如何处理Spark应用开发过程中经常遇到的错误,还将介绍一些优化技术。
第16章“该聊聊集群了——在集群环境中部署Spark”将研究Spark及其底层架构是如何在集群中工作的。我们将了解集群中的Spark架构、Spark生态系统以及集群管理等内容。当然,还有如何在独立服务器模式、Mesos、YARN以及AWS集群上部署Spark。我们也将探讨如何在一个基于云的AWS集群上部署应用。
第17章“Spark测试与调试”将解释分布式应用的测试难度。我们将看到一些处理方法。我们也将看到如何在分布式环境中进行测试,以及如何测试和调试Spark应用。
第18章“PySpark与SparkR”将涵盖其他两个常用的API。可使用Python或R语言来编写Spark代码,也就是PySpark和SparkR。具体地说,将介绍如何使用PySpark,以及如何与DataFrame API和UDF进行交互,然后我们就可以使用PySpark来执行一些数据分析了。然后将介绍如何使用SparkR,也将介绍如何使用SparkR进行数据处理与操作,以及如何与RDD和DataFrame协同工作。最后,一些数据可视化工作也可以使用SparkR。
第19章“高级机器学习最佳实践”从理论和实践两个方面探讨Spark机器学习的一些高级议题。我们将看到如何使用网格搜索、交叉检验以及超参调整等方法对机器学习模型进行调优,以获取更好的性能。接下来将研究如何使用ALS来开发一个可扩展的推荐系统。这里,ALS是一个基于模型的推荐系统算法。最后将展示一个主题建模应用,作为文本聚类技术的一个示例。
附录A“使用Alluxio加速Spark”将展示如何使用Alluxio结合Spark来加快处理速度。Alluxio是一个开源的内存存储系统,它对于很多跨平台的应用都很有用,能提升这些应用的处理速度。我们将研究使用Alluxio的可能性,以及集成Alluxio是如何在我们每次运行Spark任务时,不需要缓存数据就能提供更好性能的。
附录B“利用Apache Zeppelin进行交互式数据分析”从数据科学的角度出发,讲述交互式可视化数据分析的重要性。Apache Zeppelin是一个基于Web的记事本,可用于交互式和大规模数据分析,它可以使用多后端和解释器。该章将研究如何使用Apache Zeppelin,并将Spark作为其后端解释器,来进行大规模数据分析。
学习《Scala和Spark大数据分析 函数式编程、数据流和机器学习》时所需的准备工作
《Scala和Spark大数据分析 函数式编程、数据流和机器学习》中的所有例子都基于Ubuntu Linux 64位版本,使用Python 2.7和Python 3.5实现,其中使用的TensorFlow函数库版本为1.0.1。《Scala和Spark大数据分析 函数式编程、数据流和机器学习》中展示的源代码是兼容Python 2.7的;兼容Python 3.5+的源代码可从Packt出版社的资料库中自行下载。你也需要如下Python模块(最新版本尤佳):
● Spark 2.0.0或更高版本
● Hadoop 2.7或更高版本
● Java(JDK和JRE)1.7+/1.8+
● Scala 2.11.x或更高版本
● Python 2.7+/3.4+
● R 3.1+以及RStudio 1.0.143或更高版本
● Eclipse Mars、Oxygen或Luna(最新版本)
● Maven Eclipse plugin (2.9或更高版本)
● Maven compiler plugin for Eclipse (2.3.2或更高版本)
● Maven assembly plugin for Eclipse (2.4.1或更高版本)
操作系统:优先推荐Linux发行版(包括Debian、Ubuntu、Fedora、RHEL以及CentOS),更精确地说,对于Ubuntu,推荐版本为64位14.04(LTS)或更新版本,推荐使用VMWare player 12或Virtual box。可在Windows(XP/7/8/10)或Mac OS X(10.4.7+)上运行Spark任务。
硬件配置:处理器核心为i3、i5(推荐)或i7(可获得最佳效果)。但是,多核心处理器可以提供更快的数据处理和更好的可扩展性。对于独立服务器模式,需要至少8~16GB的内存(推荐配置);对于集群而言,单一的VM或更多的VM则至少需要32GB内存。你也需要有足够的存储来执行工作量大的任务(具体取决于要处理的数据集的大小),建议使用的存储至少有50GB的空闲空间(用于支持独立服务器模式以及SQL仓库)。
《Scala和Spark大数据分析 函数式编程、数据流和机器学习》读者对象
所有期望使用强大的Spark来进行数据分析的人们,都会意识到《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的内容极具价值。你不需要具备Spark或Scala的相关知识,当然,如果你此前就有编程经验的话(尤其是掌握其他JVM编程语言),在学习《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的相关概念时,你掌握知识的速度就会比较快。在过去数年间,Scala语言正逐步为人们所接纳采用,一直呈现出稳定的上升态势,在数据科学与分析领域尤其如此。与Scala齐头并进的是Apache Spark,它由Scala语言编写而成,并且在数据分析领域得到了极广泛的应用。《Scala和Spark大数据分析 函数式编程、数据流和机器学习》将帮助你掌握这两种工具,从而让你在大数据处理领域大显身手。
约定
注意:
警示或重要提示。
小技巧:
技巧和诀窍。
读者反馈
我们一直希望能够收到读者的反馈意见。让我们知道你对这本书的看法——你喜欢的部分或不喜欢的部分——这对我们非常重要。因为它可以帮助我们真正编写出可以充分使用的书籍。如果想向出版社发送反馈,可以直接发送电子邮件至feedback@packtpub.com,并在邮件中注明《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的书名即可。
下载样例代码
可访问http://www.tupwk.com.cn/downpage/网站,输入《Scala和Spark大数据分析 函数式编程、数据流和机器学习》ISBN或中文书名下载《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的样例代码。
一旦下载完《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的代码文件,就可以使用下列文件的最新版本来解压缩:
● 对于Windows平台而言,可使用WinRAR/7-Zip。
● 对于macOS而言,可使用Zipeg/iZip/UnRarX。
● 对于Linux而言,可使用7-Zip/PeaZip。
另外,也可扫《Scala和Spark大数据分析 函数式编程、数据流和机器学习》封底二维码下载相关资料。
勘误
尽管我们已经尽了最大努力来确保《Scala和Spark大数据分析 函数式编程、数据流和机器学习》中内容的正确性,但错误依然无法避免。因此,如果你在阅读《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的过程中发现了错误——无论是代码错误还是文本错误,都请与我们联系,我们对此将深表感激。
侵权
互联网上版权材料的盗版问题一直存在。我们非常重视知识产权的保护。因此,如果你在互联网上发现了《Scala和Spark大数据分析 函数式编程、数据流和机器学习》任何形式的非法副本,也请立即与我们联系。
问题
如果你在阅读《Scala和Spark大数据分析 函数式编程、数据流和机器学习》的过程中发现了任何问题,请与我们联系。