• 数据算法
21年品牌 40万+商家 超1.5亿件商品

数据算法

全新正版 极速发货

13.88 1.1折 128 全新

库存7件

广东广州
认证卖家担保交易快速发货售后保障

作者(美)马哈默德·帕瑞斯安(Mahmoud Parsian) 著;苏金国 等 译

出版社中国电力出版社

ISBN9787512395947

出版时间2016-10

装帧平装

开本16开

定价128元

货号1201405182

上书时间2024-08-09

谢岳书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
Mahmoud Parsian,计算机科学博士,是一位热衷于实践的软件专家,作为开发人员、设计人员、架构师和作者,他有30多年的软件开发经验。目前领导着Illumina的大数据团队,在过去15年间,他主要从事Java(服务器端)、数据库、MapReduce和分布式计算的有关工作。Mahmoud还著有《JDBC Recipes》和《JDBC Metadata,MySQL,and Oracle Recipes》等书(均由Apress出版)。

目录
序1
前言3
章二次排序:简介19
二次排序问题解决方案21
MapReduce/Hadoop的二次排序解决方案25
Spark的二次排序解决方案29
第2章二次排序:详细示例42
二次排序技术43
二次排序的完整示例46
运行示例——老版本HadoopAPI50
运行示例——新版本HadoopAPI52
第3章Top10列表54
TopN设计模式的形式化描述55
MapReduce/Hadoop实现:唯一键56
Spark实现:唯一键62
Spark实现:非唯一键73
使用takeOrdered()的SparkTop10解决方案84
MapReduce/HadoopTop10解决方案:非唯一键91
第4章左外连接96
左外连接示例96
MapReduce左外连接实现99
Spark左外连接实现105
使用leftOuterJoin()的Spark实现117
第5章反转排序127
反转排序模式示例128
反转排序模式的MapReduce/Hadoop实现129
运行示例134
第6章移动平均137
示例1:时间序列数据(股票价格)137
示例2:时间序列数据(URL访问数)138
形式定义139
POJO移动平均解决方案140
MapReduce/Hadoop移动平均解决方案143
第7章购物篮分析155
MBA目标155
MBA的应用领域157
使用MapReduce的购物篮分析157
Spark解决方案166
运行Spark实现的YARN脚本179
第8章共同好友182
输入183
POJO共同好友解决方案183
MapReduce算法184
解决方案1:使用文本的Hadoop实现187
解决方案2:使用ArrayListOfLongsWritable的Hadoop实现189
Spark解决方案191
第9章使用MapReduce实现推荐引擎201
购买过该商品的顾客还购买了哪些商品202
经常一起购买的商品206
推荐连接210
0章基于内容的电影推荐225
输入226
MapReduce阶段1226
MapReduce阶段2和阶段3227
Spark电影推荐实现234
1章使用马尔可夫模型的智能邮件营销.253
马尔可夫链基本原理254
使用MapReduce的马尔可夫模型256
Spark解决方案269
2章K-均值聚类282
什么是K-均值聚类?285
聚类的应用领域285
K-均值聚类方法非形式化描述:分区方法286
K-均值距离函数286
K-均值聚类形式化描述287
K-均值聚类的MapReduce解决方案288
K-均值算法Spark实现292
3章k-近邻296
kNN分类297
距离函数297
kNN示例298
kNN算法非形式化描述299
kNN算法形式化描述299
kNN的类Java非MapReduce解决方案299
Spark的kNN算法实现301
4章朴素贝叶斯315
训练和学习示例316
条件概率319
深入分析朴素贝叶斯分类器319
朴素贝叶斯分类器:符号数据的MapReduce解决方案322
朴素贝叶斯分类器Spark实现332
使用Spark和Mahout347
5章情感分析349
情感示例350
情感分数:正面或负面350
一个简单的MapReduce情感分析示例351
真实世界的情感分析353
6章查找、统计和列出大图中的所有三角形354
基本的图概念355
三角形计数的重要性356
MapReduce/Hadoop解决方案357
Spark解决方案364
7章K-mer计数375
K-mer计数的输入数据376
K-mer计数应用376
K-mer计数MapReduce/Hadoop解决方案377
K-mer计数Spark解决方案378
8章DNA测序390
DNA测序的输入数据392
输入数据验证393
DNA序列比对393
DNA测试的MapReduce算法394
9章Cox回归413
Cox模型剖析414
使用R的Cox回归415
Cox回归应用416
Cox回归POJO解决方案417
MapReduce输入418
使用MapReduce的Cox回归419
第20章Cochran-Armitage趋势检验426
Cochran-Armitage算法427
Cochran-Armitage应用432
MapReduce解决方案435
第21章等位基因频率443
基本定义444
形式化问题描述448
等位基因频率分析的MapReduce解决方案449
MapReduce解决方案,阶段1449
MapReduce解决方案,阶段2459
MapReduce解决方案,阶段3463
染色体X和Y的特殊处理466
第22章T检验468
对bioset完成T检验469
MapReduce问题描述472
输入472
期望输出473
MapReduce解决方案473
Spark实现476
第23章皮尔逊相关系数488
皮尔逊相关系数公式489
皮尔逊相关系数示例491
皮尔逊相关系数数据集492
皮尔逊相关系数POJO解决方案492
皮尔逊相关系数MapReduce解决方案493
皮尔逊相关系数的Spark解决方案496
运行Spark程序的YARN脚本516
使用Spark计算斯皮尔曼相关系数517
第24章DNA碱基计数520
FASTA格式521
FASTQ格式522
MapReduce解决方案:FASTA格式522
运行示例524
MapReduce解决方案:FASTQ格式528
Spark解决方案:FASTA格式533
Spark解决方案:FASTQ格式537
第25章RNA测序543
数据大小和格式543
MapReduce工作流544
RNA测序分析概述544
RNA测序MapReduce算法548
第26章基因聚合553
输入554
输出554
MapReduce解决方案(按单个值过滤和按平均值过滤)555
基因聚合的Spark解决方案567
Spark解决方案:按单个值过滤567
Spark解决方案:按平均值过滤576
第27章线性回归586
基本定义587
简单示例587
问题描述588
输入数据589
期望输出590
使用SimpleRegression的MapReduce解决方案590
Hadoop实现类593
使用R线性模型的MapReduce解决方案593
第28章MapReduce和幺半群600
概述600
幺半群的定义602
幺半群和非幺半群示例603
MapReduce示例:非幺半群606
MapReduce示例:幺半群608
使用幺半群的Spark示例612
使用幺半群的结论618
函子和幺半群619
第29章小文件问题622
解决方案1:在客户端合并小文件623
解决方案2:用CombineFileInputFormat解决小文件问题629
其他解决方案634
第30章MapReduce的大容量缓存635
实现方案636
缓存问题形式化描述637
一个精巧、可伸缩的解决方案637
实现LRUMap缓存640
使用LRUMap的MapReduce解决方案646
第31章Bloom过滤器651Bloom
过滤器性质651
一个简单的Bloom过滤器示例653
Guava库中的Bloom过滤器654
MapReduce中使用Bloom过滤器655
附录ABioset659
附录BSparkRDD659
参考书目677

内容摘要
《数据算法:Hadoop/Spark大数据处理技巧》介绍了很多基本设计模式、优化技术和数据挖掘及机器学习解决方案,以解决生物信息学、基因组学、统计和社交网络分析等领域的很多问题。这还概要介绍了MapReduce、Hadoop和Spark。
主要包括:
完成超大量交易的购物篮分析。
数据挖掘算法(K-均值、KNN和朴素贝叶斯)。
使用超大基因组数据完成DNA和RNA测序。
朴素贝叶斯定理和马尔可夫链实现数据和市场预测。
推荐算法和成对文档相似性。
线性回归、Cox回归和皮尔逊(Pearson)相关分析。
等位基因频率和DNA挖掘。
社交网络分析(推荐系统、三角形计数和情感分析)。

精彩内容
随着大规模搜索引擎(如Google和Yahoo! )、基因组分析(DNA测序、RNA测序和生物标志物分析)以及社交网络(如Facebook 和Twitter) 的不断发展,需要生成和处理的数据量已经超过了千万亿字节。为了满足如此庞大的计算需求,我们需高效、可伸缩的并行算法。MapReduce范式就是解决这些问题的一个框架。
MapReduce是一个软件框架,可以采用并行、分布式方式处理GB、TB,甚至PB级的大数据集,同时它也是一个在商用服务器集群之上完成大规模数据处理的执行框架。实现MapReduce 的方法有很多,不

过这本书中我们主要关注Apache Spark 和MapReduce/ Hadoop。你将通过简单而具体的示例来了解如何用Spark和Hadoop实现MapReduce。
这本书将为以下领域提供了基本分布式算法(分别用MapReduce、Hadoop和Spark实现),并按照这些领域组织本书的章节:
. 基本设计模式。

. 数据挖掘和机器学习。

. 生物信息、基因组和统计。

. 优化技术。

MapReduce是什么?
MapReduce 是一种编程范式,可以利用集群环境的成百上千台服务器实现强大的可伸缩性。MapReduce一词最早源于函数式编程,由Google在一篇名为“MapReduce: Simplified Data Processing on

Large Clusters ”的文章中率先提出。Google的MapReduce[8]实现是一个专用解决方案,还没有向公众发布。
3

reduce():.(Key2,.[Value2]).→.[(Key3,.Value3)]

这本书中会使用map() 函数和reduce() 函数的非形式化表示,我会用中括号([])表示列表。
在图P-1中,输入数据划分为小块(这里有5个输入分区),每个小块分别发送给一个映射器。各个映射器会生成任意数目的键-值对。映射器的输出如表P-1所示。
表P-1:映射器的输出

K1  V11
K2  V21
K1  V12
K2  V22
K2  V23

在这个例子中,所有映射器只生成两个唯一的键:{K1, K2}。所有映射器的工作完成时,这些键会经过排序、洗牌、分组,然后发送给归约器。最后,归约器将生成所需的输出。对于这个例子,我们

有两个归约器,分别用{K1, K2}键标识(见表P-2)。
表P-2:归约器的输入
键值
K1 {V11, V12} K2 {V21, V22, V23}
一旦所有映射器的工作完成,归约器就会开始它们的执行过程。每个归约器创建的输出可以包含任意数目的新键-值对(可以0个,也可以多个)。
编写map() 函数和reduce() 函数时,要确保解决方案是可伸缩的。例如,如果使用了某种数据结构(如List、Array或HashMap),而这种数据结构不能方便地存放在商用服务器的内存中,这个解决方

案就不具有可伸缩性。需要说明,map() 和reduce() 函数都在基础的商用服务器中执行,这些商用服务器可能至多有32GB 或64GB RAM (注意,这只是一个例子。如今的服务器可能已经有256GB 或

512GB RAM ,接下来几年中基础服务器可能甚至有1TB 的RAM)。因此,可伸缩性是MapReduce的核心。如果你的MapReduce解决方案不能很好的伸缩,就不能称为一个MapReduce 解决方案。在这里,我

们谈到可伸缩性时,是指“横向扩容”(scaling out ),横向扩容表示在系统中增加更多商用节点。MapReduce 主要考虑横向扩容(而不是纵向扩容(scaling up ),这表示为单个节点增加
前言| 5

资源,比如内存和CPU)。例如,如果DNA测序需要3台服务器用60小时完成,横向扩容到50台类似的服务器时,可以在不到2小时的时间内完成同样的DNA测序。
MapReduce 的核心概念是将输入数据集映射到一个键-值对集合,然后对所有包含相同键的键-值对完成归约。尽管基本概念很简单,不过如果考虑以下方面,可以看到这个概念确实很强大、很有效:
.几乎所有数据都可以映射到键-值对。

.键和值可以是任意类型:String、Integer、FASTQ (用于DNA测序)、用户自定义的定制类型,当然,也可以是键-值对本身。

MapReduce如何在一组服务器上扩展?MapReduce是如何工作的?关键在于,从概念上讲,MapReduce 的输入是一个记录列表(每个记录可以是一行或多行数据)。这些输入记录会划分并传递到集群中

的多台服务器,由map() 函数使用。map() 计算的结果是一个键-值对列表。然后reduce() 函数取各个包含相同键的值集,将它们分别组合为一个值(或一个值集)。换句话说,map() 函数是由一组

数据块生成键-值对,reduce() 则是组合map()生成的数据输出,从而能得到所需要的结果,而不是一组键-值对。
MapReduce 的主要优点之一是它的“不共享”(shared-nothing )数据处理平台。这意味着所有映射器可以独立地工作,而且映射器完成它们的任务时,归约器也能独立地开始工作(映射器或归约器

之间不共享任何数据或临界区。如果有临界区,这会减慢分布式计算的速度)。基于这种“不共享”范式,我们可以很容易地编写map() 函数和reduce() 函数,而且能轻松、有效地提高并行性。
MapReduce的简单解释
如何给出MapReduce 的一个简单解释?假设我们想要统计一个图书馆的藏书数量,这个图书馆拥有1000个书架,我们要把最后的结果报告给图书管理员。下面给出两种可能的MapReduce解决方案:
.方案1(使用map()和reduce()):─map():.聘请1000个工人;每个工人统计一个书架的藏书数量。

─reduce(): 所有工人集合在一起,把他们各自的统计结果汇总起来(向图书管理员报告他们的统计结果)。

.方案2 (使用map(),.combine()和reduce()):─map(): 聘请1110 个员工(1000名工人,100位经理,10位主管(每位主管负责管理10个经理,每个经理要管理10名工人);每个工人负责统计一个

书架,将结果报告给他的经理。

─combine(): 每个主管负责的10个经理将各自的统计结果汇总报告给这位主管。─reduce(): 所有主管集合起来,把他们各自的统计结果汇总起来(向图书管理员报告他们的统计结果)。
什么时候使用MapReduce
MapReduce 永远适用吗?答案是否定的。假设我们得到了大数据,如果可以划分这个数据,每个分区能独立地进行处理,就可以考虑使用MapReduce 算法。例如,由于图算法采用迭代方法,所以

MapReduce并不是很适合。不过,如果要对大量数据完成分组或聚集,MapReduce范式就非常适用。要想使用MapReduce来处理图,可以考虑Apache Giraph(http://giraph.apache.org/ )和Apache

Spark GraphX(https://spark.apache.org/ graphx/)项目。
下面这些情况也不适合使用MapReduce:
. 一个值的计算依赖于之前计算的值。比如,斐波那契数列就是一个很好的例子,其中每个值都是前两个值之和:
F(k.+.2).=.F(k.+.1).+.F(k)
.数据集很小,完全可以在一台机器上计算。这种情况下,最好作为一个reduce(map(data))操作来完成,而不需要经过整个MapReduce执行过程。

. 需要同步来处理共享数据。

. 所有输入数据都可以放在内存中。

. 一个操作依赖其他操作。

. 基本计算是处理器敏感型操作。

不过,很多情况下MapReduce都很适用,如:

. 必须处理大量输入数据(例如,对大量数据完成聚集或计算统计结果)。

. 需要利用并行分布式计算、数据存储和数据本地化。

. 可以独立地完成很多任务而无需同步。

. 可以利用排序和洗牌。

. 需要容错性,不能接受作业失败。

MapReduce不是什么
MapReduce是实现分布式计算的一项开创性技术,不过这个技术还蒙着很多神秘的面纱,这里就来揭开它的一些面纱:

.MapReduce 不是一个编程语言,而是一个框架,可以使用Java 、Scala 和其他编程语言在这个框架上开发分布式应用。

.MapReduce的分布式文件系统不能取代关系型数据库管理系统(如MySQL 或Oracle )。一般地,MapReduce 的输入是纯文本文件(一个映射器输入记录可以有一行或多行)。

.MapReduce 框架主要设计用于批处理,所以不要期望能够在几秒钟内迅速得到结果。不过,如果适当地使用集群,确实可以得到近实时的响应。

.并不能把MapReduce作为所有软件问题的解决方案。

为什么使用MapReduce?
前面我们讨论过,MapReduce 的目标是通过增加更多的商用服务器来实现“横向扩容”。这与“纵向扩容”是不同的(纵向扩容是为系统中的单个节点增加更多资源,如内存和CPU)。纵向扩容可能成

本很高,有时由于成本以及软件或硬件限制等原因,可能根本无法增加更多的资源。有时人们会提出一些基于主存的新兴算法来解决数据问题,但是由于主存是一个瓶颈,所以这些算法缺乏可伸缩性

。例如,在DNA测序分析中,可能需要超过512GB的RAM,这非常昂贵,而且不具有可伸缩性。
如果要提高计算能力,可能需要把计算分布到多个机器上完成。例如,要完成500GB 样本数据的DNA测序,可能需要一个服务器计算4天才能完成比对阶段。利用MapReduce,60 台服务器可以把计算时

间锐减到2小时以内。要处理大量的数据,必须能够将这些数据划分为小块来进行处理,再组合得到最终的结果。MapReduce/Hadoop 和Spark/Hadoop 可以帮助你提高计算能力,你只需要写两个函数:

map() 和reduce() 。显然,MapReduce 范式为数据分析领域提供了一个强大的新工具,近来,归功于Hadoop 等开源解决方案,这个新工具得到了越来越多的关注。
基本说来,MapReduce提供了以下优点:
.编程模型+基础架构。

. 能够编写在数百甚至上千台机器上运行的程序。

. 自动并行化和分布

. 容错(如果一台服务器宕机,作业可以由其他服务器完成)。

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP