欢迎光临
免费的PDF电子书下载网站

Scala和Spark大数据分析 函数式编程、数据流和机器学习 PDF下载

编辑推荐

近几年来,Scala得到广泛运用,在数据科学和分析领域的应用更是如火如荼。基于Scala构建的大数据处理框架Spark获得广泛认可,在产品中得到大量应用。如果你想借助Scala和Spark的卓越能力来处理大数据,本书将是你的理想选择。
本书开篇介绍Scala语言,指导你更好地理解“面向对象”和“函数式编程”等在开发Spark应用时必须掌握的概念。此后转向Spark,介绍Spark的核心抽象概念,如RDD和数据帧。利用这些知识,你可更好地使用Spark SQL、GraphX和Spark结构化流等技术来分析结构化和非结构化数据,开发出具备可伸缩性和容错能力的流式应用。*后,本书探讨一些高级主题,如Spark监控、配置、调试、测试和部署等。
通过本书,你将学会用SparkR和PySpark API来开发Spark应用,用Zeppelin进行交互式数据分析,以及用Alluxio进行内存数据处理等。
在完成本书的学习后,你将全面深入地理解Spark;执行数据分析时,无论数据集有多大,你都具备完成数据分析所需的全栈知识体系。

 ;

内容简介

本书介绍Spark应用开发的面向对象和函数式编程概念,讨论RDD和DataFrame基本抽象,讲述如何使用SparkSQL、GraphX和Spark来开发可扩展的、容错的流式应用程序,*后介绍监控、配置、调试、测试和开发等高级主题。通过本书的学习,你将能使用SparkR和PySpark API开发Spark应用程序,使用Zeppelin进行交互式数据分析,使用Alluxio进行内存数据处理,将透彻理解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、机器学习、文本分析、分布式计算以及高性能计算等领域。

Scala和Spark大数据分析 函数式编程、数据流和机器学习 PDF下载

目录

第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.4.1  Spark core   128
5.4.2  Spark SQL   128
5.4.3  Spark Streaming   128
5.4.4  Spark GraphX   129
5.4.5  Spark ML   129
5.4.6  PySpark   130
5.4.7  SparkR   130
5.5  本章小结   131
第6章  开始使用Spark——REPL和RDD   132
6.1  深入理解Apache Spark   132
6.2  安装Apache Spark   136
6.2.1  Spark独立服务器模式   136
6.2.2  基于YARN的Spark   140
6.2.3  基于Mesos的Spark   142
6.3  RDD简介   142
6.4  使用Spark shell   147
6.5  action与transformation算子   150
6.5.1  transformation算子   151
6.5.2  action算子   158
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.1.1  pairRDD   170
7.1.2  DoubleRDD   171
7.1.3  SequenceFileRDD   172
7.1.4  CoGroupedRDD   173
7.1.5  ShuffledRDD   174
7.1.6  UnionRDD   175
7.1.7  HadoopRDD   177
7.1.8  NewHadoopRDD   177
7.2  聚合操作   178
7.2.1  groupByKey   180
7.2.2  reduceByKey   181
7.2.3  aggregateByKey   182
7.2.4  combineByKey   182
7.2.5  groupByKey、reduceByKey、combineByKey和aggregateByKey之间的对比   184
7.3  分区与shuffle   187
7.3.1  分区器   188
7.3.2  shuffle   190
7.4  广播变量   193
7.4.1  创建广播变量   194
7.4.2  移除广播变量   195
7.4.3  销毁广播变量   195
7.5  累加器   196
7.6  本章小结   199
第8章  介绍一个小结构——Spark SQL   200
8.1  Spark SQL与数据帧   200
8.2  数据帧API与SQL API   203
8.2.1  pivot   208
8.2.2  filter   208
8.2.3  用户自定义函数(UDF)   209
8.2.4  结构化数据   210
8.2.5  加载和保存数据集   213
8.3  聚合操作   214
8.3.1  聚合函数   215
8.3.2  groupBy   222
8.3.3  rollup   223
8.3.4  cube   223
8.3.5  窗口函数   224
8.4  连接   226
8.4.1  内连接工作机制   228
8.4.2  广播连接   229
8.4.3  连接类型   229
8.4.4  连接的性能启示   236
8.5  本章小结   237
第9章  让我流起来,Scotty——Spark Streaming   238
9.1  关于流的简要介绍   238
9.1.1  至少处理一次   240
9.1.2  至多处理一次   241
9.1.3  精确处理一次   242
9.2  Spark Streaming   243
9.2.1  StreamingContext   245
9.2.2  输入流   246
9.2.3  textFileStream样例   247
9.2.4  twitterStream样例   248
9.3  离散流   249
9.3.1  转换   251
9.3.2  窗口操作   253
9.4  有状态/无状态转换   256
9.4.1  无状态转换   256
9.4.2  有状态转换   257
9.5  检查点   257
9.5.1  元数据检查点   258
9.5.2  数据检查点   259
9.5.3  driver故障恢复   259
9.6  与流处理平台(Apache Kafka)的互操作   261
9.6.1  基于接收器的方法   261
9.6.2  direct 流   262
9.6.3  结构化流示例   264
9.7  结构化流   265
9.7.1  处理事件时间(event-time)和延迟数据   268
9.7.2  容错语义   269
9.8  本章小结   269
第10章  万物互联——GraphX   270
10.1  关于图论的简要介绍   270
10.2  GraphX   275
10.3  VertexRDD和EdgeRDD   277
10.3.1  VertexRDD   277
10.3.2  EdgeRDD   278
10.4  图操作   280
10.4.1  filter   281
10.4.2  mapValues   281
10.4.3  aggregateMessages   282
10.4.4  triangleCount   282
10.5  Pregel API   284
10.5.1  connectedComponents   284
10.5.2  旅行商问题(TSP)   285
10.5.3  最短路径   286
10.6  PageRank   290
10.7  本章小结   291
第11章  掌握机器学习Spark MLlib
和ML   292
11.1  机器学习简介   292
11.1.1  典型的机器学习工作流   293
11.1.2  机器学习任务   294
11.2  Spark机器学习API   298
11.3  特征提取与转换   299
11.3.1  CountVectorizer   301
11.3.2  Tokenizer   302
11.3.3  StopWordsRemover   304
11.3.4  StringIndexer   304
11.3.5  OneHotEncoder   305
11.3.6  Spark ML pipeline   306
11.4  创建一个简单的pipeline   308
11.5  无监督机器学习   309
11.5.1  降维   309
11.5.2  PCA   309
11.6  分类   314
11.6.1  性能度量   314
11.6.2  使用逻辑回归的多元分类   324
11.6.3  使用随机森林提升分类精度   327
11.7  本章小结   330
第12章  贝叶斯与朴素贝叶斯   332
12.1  多元分类   332
12.1.1  将多元分类转换为二元分类   333
12.1.2  层次分类   338
12.1.3  从二元分类进行扩展   338
12.2  贝叶斯推理   338
12.3  朴素贝叶斯   339
12.3.1  贝叶斯理论概述   340
12.3.2  贝叶斯与朴素贝叶斯   341
12.3.3  使用朴素贝叶斯建立一个可扩展的分类器   341
12.4  决策树   349
12.5  本章小结   354
第13章  使用Spark MLlib对数据进行聚类分析   355
13.1  无监督学习   355
13.2  聚类技术   357
13.3  基于中心的聚类(CC)   358
13.3.1  CC算法面临的挑战   358
13.3.2  K-均值算法是如何工作的   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.2.1  标准转换器   378
14.2.2  评估转换器   379
14.3  分词   381
14.4  StopWordsRemover   383
14.5  NGram   385
14.6  TF-IDF   386
14.6.1  HashingTF   387
14.6.2  逆文档频率(IDF)   388
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.1.1  Spark Web接口   402
15.1.2  使用Web UI实现Spark应用的可视化   412
15.2  Spark配置   417
15.2.1  Spark属性   418
15.2.2  环境变量   419
15.2.3  日志   420
15.3  Spark应用开发中的常见错误   420
15.4  优化技术   425
15.4.1  数据序列化   425
15.4.2  内存优化   428
15.5  本章小结   434
第16章  该聊聊集群了——在集群环境中部署Spark   435
16.1  集群中的Spark架构   435
16.1.1  Spark生态简述   436
16.1.2  集群设计   437
16.1.3  集群管理   440
16.2  在集群中部署Spark应用   444
16.2.1  提交Spark作业   445
16.2.2  Hadoop YARN   450
16.2.3  Apache Mesos   457
16.2.4  在AWS上部署   459
16.3  本章小结   464
第17章  Spark测试与调试   465
17.1  在分布式环境中进行测试   465
17.2  测试Spark应用   468
17.2.1  测试Scala方法   468
17.2.2  单元测试   472
17.2.3  测试Spark应用   473
17.2.4  在Windows环境配置
Hadoop运行时   481
17.3  调试Spark应用   483
17.3.1  使用Spark recap的log4j
进行日志记录   483
17.3.2  调试Spark应用   488
17.4  本章小结   495
第18章  PySpark与SparkR   496
18.1  PySpark简介   496
18.2  安装及配置   497
18.2.1  设置SPARK_HOME   497
18.2.2  在Python IDE中设置PySpark   498
18.2.3  开始使用PySpark   501
18.2.4  使用数据帧和RDD   502
18.2.5  在PySpark中编写UDF   506
18.2.6  使用K-均值聚类算法进行分析   511
18.3  SparkR简介   517
18.3.1  为何是SparkR   517
18.3.2  安装与配置   518
18.3.3  开始使用SparkR   519
18.3.4  使用外部数据源API   520
18.3.5  数据操作   521
18.3.6  查询SparkR数据帧   523
18.3.7  在RStudio中可视化数据   525
18.4  本章小结   527
第19章  高级机器学习最佳实践   529
19.1  机器学习最佳实践   529
19.1.1  过拟合与欠拟合   530
19.1.2  Spark MLlib与SparkML调优   531
19.1.3  为应用选择合适的算法   532
19.1.4  选择算法时的考量   533
19.1.5  选择算法时先检查数据   534
19.2  ML模型的超参调整   536
19.2.1  超参调整   536
19.2.2  网格搜索参数调整   537
19.2.3  交叉检验   538
19.2.4  信用风险分析——一个超参调整的例子   539
19.3  一个Spark推荐系统   548
19.4  主题建模——文本聚类的最佳实践   555
19.4.1  LDA是如何工作的?   555
19.4.2  基于Spark MLlib的主题建模   557
19.5  本章小结   568
附录A  使用Alluxio加速Spark   569
附录B  利用Apache Zeppelin进行交互式数据分析   583
 

 

媒体评论

 技术含量极高的优秀书籍!
——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轻松地解决这些问题。本书不仅介绍概念,还具体阐述如何实现这些概念,可谓字字珠玑。两位作者独具匠心,感谢他们付出的辛勤劳动,感谢他们为广大读者奉献了这本精品书籍。

 

前沿

随着数据量的持续膨胀,企业决策也变得日益复杂。因此,如果你还想使用传统的分析方法来洞察数据从而推动企业前进的话,那么,不断增长的数据将给你带来巨大障碍。现在,大数据涉及的领域太广泛了,它与各种框架之间存在千丝万缕的关系。以至于大数据的定义也与这些框架能够处理的范围产生了联系。无论你在检查来自百万访问者的点击流数据,从而优化在线广告的投放位置,还是过滤数十亿的事务数据,以便鉴定危险或欺诈信息,这些行为都需要高级的分析技术,例如机器学习和图运算,从而能在远超以往的大量数据中进行自动洞察与分析操作。
作为大数据处理、分析以及跨越学术界和工业界的数据科学等领域的事实上的标准,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大数据分析  函数式编程、数据流和机器学习》的过程中发现了任何问题,请与我们联系。

 

 

Scala和Spark大数据分析 函数式编程、数据流和机器学习 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Scala和Spark大数据分析 函数式编程、数据流和机器学习