寻路大数据:海量数据与大规模分析(Google大数据专家力作超豪华译者|作序者真正梳理趋势与生态|方案与工具选型|应用场景与价值挖掘的独家内参)
【美】Michael Manoochehri(迈克尔.马诺切里)著
戴志伟等 译
ISBN 978-7-121-24472-8
2014年11月出版
定价:59.00元
244页
16开
编辑推荐
微博副总|高德技术副总裁|百度主任架构师|百度技术委员会会长|UCloud创始人&CEO联合作序推荐
大数据包罗万象,谷歌大数据平台技术权威独具匠心,站在全局高度析缕分条,让你不再迷失,能快速得其门而入
本书是大数据实战用书,包含大量真实案例、实际代码、详细解决方案。
? 掌握大数据成功及避开常见陷阱的4个指导原则
? 强调协作,避免数据孤岛带来的问题
? 高效且经济地托管和共享数TB的数据集
? “为未来而构建”以支持快速增长
? 使用Redis开发NoSQL Web应用来收集众包数据
? 使用Hadoop、Hive和Shark在大数据集上运行分布式查询
? 使用Google BigQuery构建数据信息面板
? 使用高级可视化技术探索大数据集
? 实现高效流水线以转换海量数据
? 使用Apache Pig和Cascading库将复杂处理过程自动化
? 运用机器学习方法进行分类、推荐及预测
? 使用R语言统计分析大数据集
? 建立合理的采购策略:何时选择自制、购买或外包
? 使用Python和Pandas构建高效分析工作流
? 展望可伸缩数据技术的新趋势及数据科学家的角色演变
内容提要
这是一个数据爆发的时代,更是一个数据技术爆发的时代,各行各业都在因此进行深刻的变革。如何从众多的数据技术中选择正确的工具、如何使用这些工具从海量数据中挖掘出有价值的东西,无疑是非常具有挑战性的问题。
《寻路大数据:海量数据与大规模分析》作者结合自己在Google 大数据平台工作的丰富经验,阐述了数据技术的方方面面。从数据收集、共享到数据存储,从分布式数据平台、分析型数据库到数据可视化,从数据工作流构建到大规模数据分析,作者不仅进行了全面而深入的介绍,更覆盖了目前流行的各种数据技术与工具,同时对技术选型提出了指导性的建议。最后,作者对数据挑战的非技术因素进行了深刻的分析,并对数据技术的发展趋势进行了展望,引人深思。
《寻路大数据:海量数据与大规模分析》对企业管理者、技术经理、数据分析师、数据应用开发人员和相关从业者都有很好的参考价值。决策者可以从中看到技术趋势,把握时代发展脉搏;数据分析人员可以看到经验的总结和工具的应用;其他从业者可以从中了解数据技术所涉及的各个方面。
目录
第1 部分大数据时代指引 1
第1 章数据成功四原则 3
1.1 当数据成为一件“大”事 3
1.2 数据和单台服务器 4
1.3 大数据的权衡 5
1.3.1 构建可(无限)扩展的解决方案 6
1.3.2 构建可(在互联网上)共享数据的系统 7
1.3.3 构建解决方案,而非基础设施 8
1.3.4 关注从数据中解放价值 8
1.4 大数据流水线剖析 9
1.5 终极数据库 10
1.6 总结 10
第2 部分收集和共享海量数据 13
第2 章托管和共享TB 级原始数据 15
2.1 文件之殇 16
2.1.1 共享大量文件的挑战 16
2.2 存储:基础设施即服务 17
2.2.1 网络很慢 18
2.3 选择合适的数据格式 18
2.3.1 XML :数据,描述你自己 20
2.3.2 JSON :程序员的选择 21
2.4 字符编码 22
2.4.1 文件转换 24
2.5 移动中的数据:数据序列化格式 25
2.5.1 Apache Thrift 和Protocol Buffers 26
2.6 总结 27
第3 章构建基于NoSQL 的Web 应用采集众包数据 29
3.1 关系型数据库:命令及控制 30
3.1.1 关系数据库的ACID 测试 32
3.2 当关系型数据库遇上互联网 33
3.2.1 CAP 原理与BASE 34
3.3 非关系型数据库的模式 36
3.3.1 键- 值数据库 36
3.3.2 文档存储 38
3.4 为写入性能优化:Redis 40
3.5 在多个Redis 实例上分片 43
3.5.1 使用Twemproxy 自动分区 44
3.5.2 Redis 的替代选项 46
3.6 NewSQL :Codd 归来 46
3.7 总结 47
第4 章解决数据孤岛问题的策略 49
4.1 堆满术语的仓库 49
4.1.1 实践中的问题 51
4.1.2 数据合规与安全规划 52
4.1.3 走进数据仓库 53
4.1.4 数据仓库的口诀:抽取、转换和加载 54
4.2 Hadoop :数据仓库中的大象 55
4.3 数据孤岛也可能是个优点 55
4.3.1 专注于数据问题,而不是技术 56
4.3.2 鼓励员工提出他们自己的问题 57
4.3.3 投资沟通数据孤岛的技术 57
4.4 融合:数据孤岛的终结 58
4.4.1 Luhn 的商业智能系统是否能成为现实 59
4.5 总结 59
第3 部分数据探究 61
第5 章使用Hadoop、Hive 和Shark 探索大规模数据集 63
5.1 什么是数据仓库 64
5.2 Apache Hive :在Hadoop 上进行交互式查询 66
5.2.1 Hive 用例 66
5.2.2 Hive 实战 67
5.2.3 在Hive 中使用其他数据源 71
5.3 Shark :以内存的速度进行查询 72
5.4 云中的数据仓库 73
5.5 总结 74
第6 章使用Google BigQuery 构建数据信息中心 77
6.1 分析型数据库 78
6.2 Dremel :均贫富 79
6.2.1 Dremel 与MapReduce 的不同之处 80
6.3 BigQuery :数据分析即服务 81
6.3.1 BigQuery 的查询语言 82
6.4 建造自己的大数据信息面板 83
6.4.1 授权访问BigQuery API 84
6.4.2 运行查询并获取结果 87
6.4.3 缓存查询结果 88
6.4.4 添加可视化图形 89
6.5 分析型查询引擎的未来 91
6.6 总结 91
第7 章探索大数据的可视化策略 93
7.1 警世良言:将数据翻译成故事 94
7.2 人类尺度 VS 机器尺度 97
7.2.1 交互性 97
7.3 开发交互式数据应用 98
7.3.1 使用R 和ggplot2 实现交互式可视化 98
7.3.2 matplotlib: Python 的2D 图形库 100
7.3.3 D3.js :用于Web 的交互式可视化库 100
7.4 总结 104
第4 部分构建数据流水线 107
第8 章整合:MapReduce 数据流水线 109
8.1 数据流水线是什么 109
8.1.1 正确的工具 110
8.2 使用Hadoop Streaming 搭建数据流水线 111
8.2.1 MapReduce 和数据转换 111
8.2.2 最简单的流水线:stdin 到stdout 113
8.3 单步MapReduce 变换 115
8.3.1 从原始NVSS 数据中抽取相关信息:map 阶段 116
8.3.2 合计每月出生数:reducer 阶段 117
8.3.3 在本地测试MapReduce 流水线 118
8.3.4 在Hadoop 集群上运行我们的MapReduce 作业 119
8.4 降低复杂性:Hadoop 上Python 的MapReduce 框架 120
8.4.1 使用mrjob 重写Hadoop Streaming 示例 121
8.4.2 建造一个多步流水线 122
8.4.3 在Elastic MapReduce 上运行mrjob 脚本 124
8.4.4 其他基于Python 的MapReduce 框架 125
8.5 总结 125
第9 章使用Pig 和Cascading 构建数据转换工作流 127
9.1 大规模数据工作流实战 128
9.2 多步MapReduce 转换真复杂 128
9.2.1 Apache Pig :拒绝复杂 129
9.2.2 使用交互式Grunt shell 运行Pig 130
9.2.3 过滤和优化数据工作流 132
9.2.4 以批处理模式运行Pig 脚本 132
9.3 Cascading :构建健壮的数据工作流应用 133
9.3.1 以source 和sink 的方式思考 134
9.3.2 构建Cascading 应用 135
9.3.3 创建一个Cascade :一个简单的JOIN 例子 136
9.3.4 在Hadoop 集群上部署Cascading 应用 138
9.4 何时选择Pig 或Cascading 139
9.5 总结 140
第5 部分基于大规模数据集的机器学习 141
第10 章使用Mahout 构建数据分类系统 143
10.1 机器能否预测未来 144
10.2 机器学习的挑战 144
10.2.1 贝叶斯分类 146
10.2.2 聚类 146
10.2.3 推荐引擎 148
10.3 Apache Mahout :可伸缩的机器学习工具 148
10.3.1 使用Mahout 进行文本分类 149
10.4 MLbase :分布式机器学习框架 152
10.5 总结 152
第6 部分基于大规模数据集的统计分析 155
第11 章使用R 语言处理大数据集 157
11.1 统计学为什么性感 158
11.1.1 R 处理大型数据集的局限性 159
11.1.2 R 的数据帧和矩阵 161
11.2 处理大数据集的策略 162
11.2.1 大矩阵处理:bigmemory 和biganalytics 162
11.2.2 ff: 使用大于内存的数据帧 164
11.2.3 biglm :大规模数据集的线性回归 165
11.2.4 RHadoop: 使用R 访问Apache Hadoop 166
11.3 总结 168
第12 章使用Python 和Pandas 构建分析工作流 171
12.1 数据乐园中自在的蟒蛇——Python 172
12.1.1 为统计性计算选择一门语言 172
12.1.2 扩展现有代码 173
12.1.3 工具和测试 174
12.2 用于数据处理的Python 库 174
12.2.1 NumPy 175
12.2.2 SciPy :Python 的科学计算库 176
12.2.3 数据分析库Pandas 178
12.3 构建更复杂的工作流 182
12.3.1 处理损坏或丢失的记录 184
12.4 iPython :科学计算工具链的最后一环 185
12.4.1 在集群上并行执行iPython 186
12.5 总结 190
第7 部分展望未来 191
第13 章何时选择自制、购买或外包 193
13.1 功能重合的解决方案 193
13.2 理解你的数据问题 195
13.3 自制还是购买问题的参考手册 197
13.3.1 你已经对哪些技术有所投入 197
13.3.2 从小处着手 198
13.3.3 规划时考虑可扩展性 198
13.4 私人数据中心 199
13.5 了解开源的成本 201
13.6 一切皆服务 202
13.7 总结 202
第14 章未来:数据科技的几个趋势 205
14.1 Hadoop :搅局者与被搅局者 206
14.2 一切皆在云中 208
14.3 数据科学家的兴衰 209
14.4 融合:终极数据库 212
14.5 文化融合 213
14.6 总结 214
作者简介
Michael Manoochehri 是个企业家、作家和乐观主义者。凭借自己与企业、研究机构和非营利性机构多年的合作经验,他力图让可扩展数据分析变得更加廉价和易获取。Michael 是Google 云平台开发者关系组的成员之一,关注云计算和数据开发者产品,例如Google BigQuery。此外,Michael 是技术博客ProgrammableWeb.com的作者之一,曾在乌干达农村地区研究移动电话的使用,拥有UC Berkeley 信息学院的信息管理与系统文学硕士学位。
媒体评论
大规模数据分析几乎对所有行业都极其重要。移动和社交技术产生了海量的数据集,分布式云计算提供了存储和分析这些数据所需的资源,专家们掌握着全新的技术,其中包括NoSQL数据库。但是迄今为止,关于“大数据”的大部分书籍只不过是业务争论或者产品目录。本书则不同:它是每个大数据决策者、实施者和战略制定者必不可少的实战指南。
Michael Manoochehri是一个前Google工程师和数据骇客,他为那些需要低资源消耗和时间开销的实用方案的专业人员写作了本书。借助其广博的知识,作者帮助您专注于构建应用而不是基础设施管理,因为这样您才能从中获得最大的价值。
作者展示了如何结合使用不同的技术经济、有效地解决关键的大数据用例。您将看到进行海量数据集管理、数据可视化、数据流水线和信息面板构建、统计分析工具选择等的专业方法。纵观本书,作者演示了目前最先进的数据分析工具的使用技巧,其中包括Hadoop、Hive、Shark、R、Apache Pig、Mahout和Google BigQuery。
对数据进行采集、存储和分析的工具种类非常繁多,而且新的工具还在不断涌现。对于刚进入这个领域的新人来说,这往往意味着需要浏览众多网站和相关书籍才能对大数据处理的基础知识有个基本的了解。正因如此,这本书成为 Addison Wesley 数据分析(Data & Analytics)丛书的一个有力补充:本书对构建大数据分析系统的工具、技术和实用技巧进行了全面的介绍。
Michael 是介绍大数据分析的绝佳人选,他曾在 Google 的云平台开发者关系组工作,帮助开发者使用 BigQuery(Google 的 TB 级数据分析平台)进行大规模数据分析。他将自己在大数据领域广阔的知识面带到了这本书中,为刚接触大数据的人和寻求建议、技巧和工具的人提供了非常实用的实战指南。
本书从大数据系统的成功应用开始介绍,之后陆续对 NoSQL、分布式计算和CAP 理论进行了讲解。在介绍使用 Hadoop 和 Hive 分析大数据之后,又覆盖了使用 BigQuery 进行实时分析的相关内容。之后还包括了 MapReduce 流水线、Pig 和Cascading、使用 Mahout 进行机器学习等高级课题。在书的最后,读者会看到将Python 和 R 整合到大数据工具链中的实际案例。本书大部分章节都包含了很多例子以帮助读者学习和使用相关的大数据工具。如果你想要一本对大数据分析有一个全面了解的书籍,本书绝对是不二之选。
——Paul Dix
前言
注意到了吗?移动技术和社会化媒体产生的数据已经超过了人类能够理解的范围,大规模数据分析突然变得魅力四射。
分布式和云计算领域正在快速发展以分析和处理这些数据。技术变革那令人难以置信的速度已经彻底颠覆了人们应对数据挑战的旧有观念,强迫他们跟上时代的步伐去评估一系列技术,而这些技术有时甚至是互相有冲突的。
很久以来,关系型数据库一直是商业智能应用的推进器,如今一些激进的开源NoSQL 新贵也加入了进来。二者的结合构成了一种全新的混合数据库解决方案。基于Web 的计算所存在的优点驱使着大规模数据存储从定制数据中心转向可伸缩的“基础设施即服务”上来。另一方面,基于开源的Hadoop 生态系统的项目使得普通开发者也能够接触到数据处理技术,这在以前只有一些做云计算的大公司,如Amazon 和Google 才能做到。
这些技术创新的结果通常被称为大数据(Big Data)。关于这个词汇的含义有很多争论。大数据是一个新产生的趋势,抑或只是老调重弹?大数据是如其字面意思那样意味着很多的数据,还是指使用新的方式去挖掘数据价值的过程呢?科学历史学家George Dyson 总结得很好:“当扔掉数据的代价大于所需机器代价时,大数据才有了存在的价值。”换句话说,当数据本身的价值超过了收集和处理这些数据所需的计算能力时,就有了大数据。
尽管一些支持大数据运动的公司和开源项目的令人惊奇的成功的确是事实,但同时很多人也已经发现,去了解大量新的数据解决方案和服务提供商非常具有挑战性。而我发现设计解决方案去面对数据挑战的过程往往可以归纳为一系列共同的用例,这些用例在这些解决方案中一再出现。
寻找高效的数据解决方案就意味着权衡。一些技术是为某类特殊的数据用例专门优化的,因此对于其他类型的数据来说并不是最好的选择。一些数据库软件为了达到更高的分析速度而牺牲了灵活性,而另一些数据库软件可能为了更高的性能会牺牲一致性。本书会通过介绍实际用例和真实的成功案例帮助你学习如何去做选择。
本书的适用范围
在这个世界上没有使用无限的金钱和资源解决不了的问题。不管怎样,拥有大量资源的组织总是可以建造他们自己的系统去收集和分析任何规模的数据。本书并不是写给这些拥有无限的时间、一大群努力的工程师和无穷预算的人们的。
本书写给除此以外的其他人。这些人在寻找数据解决方案,但同时拥有的资源有限。大数据时代的一个主题是任何人都能够获取到合适的工具,而这些工具在几年前还只有少数几个大公司拥有。然而另一个摆在面前的事实是,很多工具非常新颖,并在快速演变,并不总是能够无缝地互相衔接。本书的目标就是向读者演示如何高效地将这些部件组装在一起建造成一个个完整的系统。我们会讨论解决数据问题的策略,如何使它们变得经济、可行,当然还必须具有实用性。
开源软件已经在无数的方面降低了人们获取技术的难度,在大数据领域也是如此。但是,本书中涉及的技术和解决方案并不全部是开源的,有时候涉及商业公司提供的计算资源服务。
尽管如此,很多基于云的服务是使用开源工具建造的,事实上,若没有这些开源工具,很多云服务根本就不会存在。因为规模经济效应,公用计算平台越来越多,用户可以按需付费购买超级计算资源,就像人们购买自来水和电一样。我们会讨论在保证系统可伸缩性的同时尽量降低开销的策略。
为什么现在写这本书
有一件事仍然让我感到非常神奇,那就是如果不考虑经济发展程度不一和语言障碍,写一个能够被整个星球的人使用的软件并非不可能。像Facebook、Google 搜索、Yahoo !邮箱和中国的QQ 空间这样的Web 应用拥有几亿甚至几十亿的活跃用户并非不可能。Web 和相关开发工具的规模仅仅是大数据领域发展速度如此令人瞩目的原因之一。让我们来看看对此也有贡献的其他趋势吧。
开源大数据的成熟
2004 年,Google 发布了一篇著名的论文,文中详细介绍了一个叫作MapReduce的分布式计算框架。MapReduce 框架是Google 用以将海量数据处理问题分割成多个更小问题的关键技术。不久之后,Google 发布了另一篇论文,介绍了Google 内部使用的分布式数据库技术:BigTable。
从此,很多开源技术出现了,它们要么是这些Google 论文中技术的实现,要么受到了其启发。同时,由于关系型数据库在分布式系统中使用所暴露出来的先天不足,新的数据库范式越来越为人们所接受。某些范式彻底避开了关系型数据库的核心属性,抛弃了标准化的模式、确保的一致性,甚至SQL 本身。
Web 应用的崛起
随着喜欢使用Web 的人越来越多,数据产生的速度也越来越快。Web 用户的增加也带来了Web 应用的增加。
基于Web 的软件通常基于应用程序接口(API)构建。应用程序接口能够将网络中独立的服务连接起来。例如,很多应用允许用户使用其Twitter 账户信息来做认证,或者通过Google 地图来可视化地分享自己的地理位置。每一个接口都有可能会提供某种类型的日志信息用于做数据驱动的决策。
另一个对现在的“数据洪流”有所贡献的是持续增长的用户产生内容和社会化网络的普及。互联网使得人们能够以极小的代价发布内容。尽管会有大量的噪声数据,但是从营销和广告方面看,懂得如何收集和分析雪崩式的社会化网络数据仍然是非常有用的。
根据从这些Web 服务中收集的信息来辅助进行商业决策是可行的。例如,想象一下如何根据地理信息洞察销售规律:是否购买了某种产品的独立用户有30% 来自于法国并且在Facebook 上分享了他们的购物信息?像这样的数据很可能会帮助你决定动用资源瞄准社会化网络上的法国客户。
移动设备
可伸缩的数据技术比过去任何时候都热门的另一个原因是,全球移动通信设备数量的爆炸。与其说这种趋势是由于个人对功能手机和智能手机的使用造成的,不如把这种趋势看作是以用户身份为中心而与设备无关的。假如你同时在使用一台计算机和一部智能手机,那么或许你就能够通过其中任何一个设备来存取自己的个人数据。而这份数据或许是存储在某个基础设施即服务的提供商的数据中心中。类似地,我的智能电视能够在空闲的时候把我关注的Twitter 用户的推文作为屏幕保护显示出来。这些都是普适计算——基于你的身份从联网的任何设备存取资源的例子。
随着移动设备使用的加速增长,消费性移动设备越来越多地被用于商业目的。我们正处于普适计算的早期阶段,人们使用的设备仅仅是作为通过网络存取个人数据的工具。业界和政府正开始认识到使用100% 基于云的商业生产力软件的关键优点,即能够改进雇员的机动性和提高工作效率。
总之,每天有数百万的用户开始通过持续增长的设备使用基于网络的应用程序。只要能够收集、处理和分析这些数据,就能够从中发现可用于进行商业决策的巨大价值。
物联网
未来,任何使用电的设备都可能会连接到互联网,因此会有很多数据在用户、设备和服务器之间来回传输。这通常被叫作物联网(Internet of Things)。如果你认为现在的数十亿互联网用户产生的数据很多的话,想想等到我们所有的汽车、手表、灯泡和面包机都上网了之后会怎么样吧。
尽管还不清楚能连接Wi-Fi 的面包机有没有市场,但是越来越多的商业公司和个人爱好者开始使用廉价硬件进行物联网方面的探索。我们可以想象一下这种联网设备:用户能够完全通过智能机或平板电脑来操控。这种技术已经出现在了电视机上,应该很快就能取代微波炉上那些令人无法容忍的控制面板了。
就像前面描述的移动应用和网络应用趋势,物联网对个人隐私和政策的影响需要进行详细的评估:谁可以获知你在哪里如何使用你新买的支持Wi-Fi 的电动牙刷?另一方面,从这些设备中收集的信息也可以使市场更加高效、自动检测设备中的潜在故障,或者向用户发出警告信息,这些警告信息可能会节省他们的时间和金钱。
通向普适计算之路
前面提到的信息太多,可能反而转移了大家的注意力,但是有一点是非常重要的:随着互联网背后的分布式计算技术使得人与人之间的交流越来越容易,大数据技术趋势也让寻找问题答案的过程从过去的不可能变得可能。
更重要的是,用户体验的进步意味着我们正在进入这样一个世界——探究我们产生的令人无法想象的海量数据的技术正在变得越来越透明、经济和唾手可得。
本书组织结构
处理海量的数据需要使用一系列专业技术,而每种技术本身都有取舍和挑战。本书分成几个部分,分别描述在一些常见用例下的数据挑战和成功的解决方案。第1 部分“大数据时代指引”包含了第1 章:“数据成功四原则”,本章描述了为什么大数据如此重要,以及为什么新技术的前景不仅意味着机遇也意味着挑战。本章介绍了贯穿全书的共同主题,如构建可伸缩的应用;构建解决数据孤岛问题的协同工具;在考虑使用什么技术之前先考虑应用场景;除非绝对必要,否则避免建造基础设施。
第2 部分“收集和共享海量数据”描述了关于收集和共享大规模数据的应用场景。第2 章“托管和共享TB 级原始数据”描述了如何应对托管和共享大量文件中存在的看起来很简单的挑战。选择合适的数据格式是非常重要的,本章覆盖了共享数据时必须要考虑的问题,以及经济地托管大量数据时所需的基础设施。本章通过讨论传输数据时使用的序列化格式给出了相应的结论。
第3 章“构建基于NoSQL 的Web 应用采集众包数据”介绍了可伸缩数据库技术领域。本章讨论了关系型数据库和非关系型数据库的历史,以及如何在二者之间进行选择。我们还会介绍流行的Redis 数据库,以及将Redis 实例在多台机器上进行分片的策略。
可伸缩数据分析需要多种技术知识和应用经验,这常常导致数据被分割为一个个互不兼容的数据孤岛。第4 章“解决数据孤岛问题的策略”详细分析了数据孤岛存在的原因和解决相关问题的策略。本章还讨论了为何数据孤岛也有利好的一面。
收集、存储和共享数据之后,我们会想要探索数据。第3 部分“数据探究”包括了在探索大数据集的时候涉及的用例和技术。在大规模数据上执行查询通常需要分布式解决方案。第5 章“使用Hadoop、Hive 和Shark 探索大规模数据集”介绍了流行的用于在持续增长的数据集上执行查询的可伸缩工具。本章重点关注Apache Hive,它能够将类SQL 查询语句翻译为在Hadoop 上运行的MapReduce 作业。
有时数据查询是迭代式的。分析型数据库是一种为查询数据集并迅速返回结果而专门进行了优化的软件。第6 章“使用Google BigQuery 构建数据信息中心”描述了分析型数据库应用案例和如何将它们作为Hadoop 这样的批处理工具的补充。本章介绍了Google BigQuery——一种完全托管的使用类SQL语法的分析型数据库。本章还会演示如何将BigQuery 的API 作为基于Web 技术的数据信息中心背后的引擎。
数据可视化是一个历史悠久而丰富多彩的研究领域。第7 章“探索大数据的可视化策略”介绍了在大数据集上使用可视化工具的益处和潜在陷阱。本章介绍了当数据量增长得很大时的可视化策略,还介绍了数据可视化过程中需要用到的数据分析工具。
使用可伸缩数据技术的时候,遇到的一个共同问题是不同的软件工具是为了不同的用例做优化的。鉴于此,一个共同的用例是将大规模数据从一种格式或形态转换成另一种格式或形态。第4 部分“构建数据流水线”介绍了实现用于改进数据转换的流水线和工作流的方法。第8 章“整合:MapReduce 数据流水线”介绍了使用Hadoop MapReduce 框架处理大规模数据的思想。本章描述了使用Hadoop Streaming API 和像Python 这样的脚本语言创建实用且易行的MapReduce 应用。
当数据处理任务变得非常复杂之后,我们需要使用工作流工具来进一步使数据转换任务变得更加自动化。第9 章“使用Pig 和Cascading 构建数据转换工作流”介绍了表达复杂MapReduce 任务的两种技术。Apache Pig 是一种工作流描述语言,它能够使定义复杂的多步的MapReduce 作业变得容易。本章还介绍了Cascading——一个优雅的可用于使用Hadoop 构建复杂数据工作流应用的Java 库。
当数据量增长到非常大之后,我们需要使用计算机来寻找对人类有用的信息。如果能够使用机器基于现有的数据模型对收到的信息进行分类、推荐和预测,那将是非常有用的。第5 部分“基于大规模数据集的机器学习”包括第10 章“使用Mahout 构建数据分类系统”,本章介绍了机器学习领域,还会使用流行的Apache Mahout 机器学习库来演示具有普遍性的机器学习任务——文本分类。
数据统计的目标之一是解释数据的质量和意义。第6 部分“基于大规模数据集的统计分析”介绍了统计分析大规模数据的常用工具和用例。R 语言是最流行的一种用于表达统计分析任务的开源语言。第11 章“使用R 语言处理大数据集”讲述了一种正在变得更加普遍的用例:使用R 语言高效地处理大数据集。本章介绍了当数据量增长到比系统可用内存更大的时候可以使用的R 语言库,还介绍了如何将R作为Hadoop 集群的界面使用。
虽然R 语言非常流行,但是使用通用语言来解决数据分析挑战仍然有其优点。第12 章“使用Python 和Pandas 构建分析工作流”介绍了越来越流行的Python 分析工具栈。本章包括了用于处理时间序列数据的Pandas 库的使用,以及iPython 笔记本——一种支持共享和协同的增强脚本环境。
并不是所有的数据挑战都是纯技术相关的。第7 部分“展望未来”介绍了在面对数据分析创新时处理组织不确定性所使用的实用策略。第13 章“何时选择自制、购买或外包”介绍了在面对数据分析这个高度创新的领域时制定采购决策的策略。本章还谈到了使用开源技术构建数据解决方案的利弊。
最后,第14 章“未来:数据科技的几个趋势”介绍了可伸缩数据技术(包括推动创新的激励因素)的当前趋势。本章也将深入讨论所谓数据科学家不断演变的作用和各种数据技术的融合。
相关推荐
4. **高性能优化**:针对大规模地图和大量动态障碍进行了优化,确保在实时环境中运行流畅。 5. **可视化编辑器**:提供直观的图形界面,方便开发者设置和调试寻路系统,包括路径绘制、节点可视化和障碍物管理。 6....
线性的、弯曲的、贝塞尔的和NavMesh的路径 具有各种循环类型的运动脚本 路径的方向、延迟、反转等. 使用DOTween的Tween运动(包括). 使用Unity Navigation的NavMesh运动 使用UnityEvents在航点调用你自己的...
单片机设计,工具源码,...云计算与大数据:数据集、包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
通过这个源码,开发者不仅可以学习A*寻路算法的基本实现,还可以了解到如何在C#环境中构建一个功能完备的寻路系统,包括与外部数据的交互和用户界面的设计。对于想要提升游戏开发技能或者对路径搜索算法感兴趣的人来...
基于C#的AI自动寻路:通过向四周循环遍历,标记路径值,寻找最短路径+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于C#的AI自动寻路:通过向四周循环...
现在您可以拥有它,如果您现在下载,您还将收到另外两种寻路方法:Dijkstra 算法和贪婪最佳优先。 此外,在主脚本 (demoall.m) 中,您可以更改字段的大小、墙壁的百分比以及用于计算启发式的距离度量。 此外,在这...
本文将深入探讨Cocos Creator中的寻路系统,并结合提供的压缩包文件,分析其结构和工作原理。 首先,寻路系统的基本概念是解决游戏对象如何在复杂环境中移动的问题。在Cocos Creator中,我们通常会利用A*(A-Star)...
### 迷宫寻路数据结构栈实现 #### 1. 栈的基本概念 - **定义**:栈是一种只允许在一端进行插入或删除操作的线性表。这一端被称为“栈顶”,另一端称为“栈底”。当把一个元素加入栈中时的操作称为“入栈”或“压栈...
专用于六边形/六方向寻路,使用时请注意不要与原本的4/8方向方法混淆; 地图为二维数组,示例为生成的地图为左右交错、简单直观的展示了基本使用方法,可随实际使用自行修改; 工程文件由FD打开,无FD可直接使用...
综上所述,易语言地图寻路源码项目涉及到多个方面的知识,包括路径规划算法的实现、地图数据结构的设计、障碍物处理以及坐标系统的运用等。通过这个项目,开发者可以深入学习和实践这些知识点,提升在游戏开发或类似...
这些技术在现代网络环境中至关重要,尤其是随着网络规模的不断扩大和复杂性增加。本文将详细讨论网络拓扑的自动画图、寻路算法以及故障处理。 1. **网络拓扑自动画图**: 网络拓扑的自动画图允许管理员直观地了解...
这使得插件在应对复杂场景或大规模地图时表现更加出色,为游戏开发提供了更稳定可靠的寻路解决方案。 插件的使用通常涉及以下几个关键知识点: 1. **配置和设置**:开发者需要了解如何配置插件,设置起点、目标点...
本文将详细解析三种常见的寻路算法:深度优先搜索(DFS)、宽度优先搜索(BFS)以及A*算法,并结合提供的源码文件“寻路算法-4.11.cpp”进行分析。 1. 深度优先搜索(DFS) DFS 是一种用于遍历或搜索树或图的算法。...
研究内容:主要包括AGV模拟器的研发、膨胀地图下A*寻路算法的应用、寻路算法的优化和性能评估。 AGV模拟器开发:介绍了开发环境选择、软件架构设计、硬件抽象、消息传递机制、导航逻辑、坐标变换、运动优化、异常...
本篇文章将详细探讨三种主流的寻路方法:A*(A星)算法、广度优先搜索(Breadth-First Search, BFS)以及深度优先搜索(Depth-First Search, DFS),并结合提供的压缩包文件中的代码资源进行分析。 首先,A*算法是...
可以配合TiledMap进行地图编辑并生成寻路算法,因为本附件还附带我修复好的gen_navmesh插件,在编辑好地图后,可以选择“扩展->gen_navmesh->gen”来更新AI寻路的地图数据! 注意:本版本为TS版本!
在本项目中,"自动寻路贪吃蛇C++源码"是一个基于C++编程语言实现的游戏,它结合了经典的贪吃蛇游戏玩法与自动寻路算法。这个游戏的核心亮点在于贪吃蛇能够智能地通过自动寻路算法找到食物,而不仅仅是随机移动。以下...