本书的主要内容

第1章:数据科学生态系统。这一章介绍处理大规模数据的方法和大数据生态系统。它侧重于讲解在后面章节中使用的数据科学工具和技术,并介绍环境以及如何正确地配置环境。此外,它还介绍与整体数据架构相关的一些非功能性注意事项。

第2章:数据获取。一名数据科学家最重要的任务之一是准确地将数据加载到数据科学平台上。我们不需要不受控制、临时组织的流程,这一章介绍如何在Spark中构建通用的数据采集管道,这些管道作为许多输入数据馈送流中的可重用组件。

第3章: 输入格式与模式。这一章演示如何将数据从原始格式加载到不同的模式,从而能在相同的数据上执行各种不同类型的分析。考虑到这一点,我们将研究数据模式易于理解的领域,涵盖传统数据库建模的关键领域,并解释一些基础原则仍适用于Spark的原因。此外,在训练Spark技能的同时,我们将分析GDELT数据集,并展示如何以高效和可扩展的方式存储这个大型数据集。

第4章:探索性数据分析。一个常见的误解是EDA仅能用于发现数据集的统计属性,和提供关于如何运用数据集的见解。实际上,这种看法非常片面。完整的EDA将改变这种看法,并包含对“在生产中使用此数据流的可行性”的详细评估。同时它还要求我们了解如何为数据集指定工业级的数据加载方法,这种方法可能在“熄灯模式”下运行多年。本章使用“数据剖析”技术提供一种进行数据质量评估的快速方法,这种方法能加快整个进程。

第5章:利用Spark进行地理分析。地理处理是Spark强有力的使用案例之一,这一章将演示如何入门地理处理。这一章的目标是说明数据科学家如何使用Spark处理地理数据,并在非常大的数据集上生成强大的、基于地图的视图。我们演示如何通过集成GeoMesa的Spark轻松处理时空数据集,这有助于将Spark转变为复杂的地理处理引擎。这一章还涉及利用这些时空数据将机器学习应用于预测油价。

第6章:采集基于链接的外部数据。这一章旨在解释一种通用的模式,通过URL或API(如GDELT和Twitter)找到外部内容来增强本地数据。我们提供一个使用GDELT新闻索引服务作为新闻来源的教程,演示如何建立一个全网规模的新闻扫描器,用来从互联网上采集感兴趣的全球突发新闻。我们进一步阐述如何使用专业的Web采集组件克服因规模的扩大而引发的挑战。

第7章:构建社区。这一章旨在解决数据科学和大数据中的常见用例。随着越来越多的人互动、交流、交换信息,或者仅是在不同的主题上分享共同兴趣,整个世界就可以用一个图来表示。数据科学家必须能够在图结构上发现社区,找到主要参与者,并检测可能的异常。

第8章:构建推荐系统。如果要选择一个算法向公众展示数据科学,推荐系统肯定会被选中。如今,推荐系统随处可见,其流行的原因是它们良好的通用性、实用性和广泛适用性。在本章中,我们将演示如何使用原始音频信号推荐音乐内容。

第9章:新闻词典和实时标记系统。虽然分层数据仓库将数据存储在文件夹里的文件中,但典型的基于Hadoop的系统仍依赖扁平架构来存储数据。如果没有适当的数据管理或对全部数据内容的清晰理解,那“数据湖”就将不可避免地变成“沼泽”。在沼泽中,像GDELT这样的有趣数据集只不过是一个包含大量非结构化文本文件的文件夹。在这一章中,我们将描述一种以非监督方式和近实时方式标记输入GDELT数据的创新方法。

第10章:故事除重和变迁。在这一章中,我们对GDELT数据库进行重复数据消除并建立索引将其转换为故事,然后随着时间的推移跟踪故事并了解它们之间的联系、它们可能如何变异,以及它们在不久的将来是否会引发后续事件。本章的核心是Simhash的概念,它用于检测近似重复以及利用随机索引建立向量以降低维度。

第11章:情感分析中的异常检测。2016年较为引人注目的事件可能是美国总统选举及其最终结果——唐纳德·特朗普当选总统。这场选举将长期被人们铭记,尤其是它史无前例地使用了社交媒体,并且唤起了用户的激情,大多数人都使用社交媒体来表达自己的感受。在这一章中,我们不会试图预测结果本身,而是将目标放在使用实时Twitter馈送来检测在美国大选期间的异常推文。

第12章:趋势演算。早在数据科学家流行研究“什么是趋势”的概念之前,数据科学还没有很好地解决一个老问题:趋势。目前,对趋势的分析主要由人们的“注视”时间序列图表提供解释。但人们的眼睛到底是在看什么呢?本章介绍在Apache Spark中实现的一种新的数值化研究趋势的算法:趋势演算。

第13章:数据保护。在这本书中,我们涉及数据科学的许多领域,经常误入那些传统上与数据科学家的核心工作无关的知识领域。在这一章中,我们将访问一个经常被忽视的领域——保护数据。更具体地说,本章将介绍如何在数据生命周期的所有阶段保护你的数据和分析结果。本章的核心是在Spark中构建商业级加密解码器。

第14章:可扩展算法。在这一章中,我们将说明为什么有时能在小规模数据下工作的基础算法会在大数据工作中失败。我们将说明在编写运行于海量数据集上的Spark作业时要如何避免出现问题,并介绍算法的结构以及如何编写可扩展到超过PB级数据的自定义数据科学分析。这一章还介绍了并行化策略、缓存、洗牌策略、垃圾回收优化和概率模型等功能,并说明如何使用这些功能帮助你充分利用Spark。