Skip to content

Latest commit

 

History

History
145 lines (81 loc) · 15 KB

File metadata and controls

145 lines (81 loc) · 15 KB

零、前言

数据科学的目的是利用数据改造世界,而这个目标主要是通过扰乱和改变现实行业中的真实流程来实现的。要在这个层面上运作,我们需要能够构建实质性的数据科学解决方案;能够解决实际问题,并且能够可靠运行,让人们信任并采取行动。

这本书解释了如何使用 Spark 来提供生产级数据科学解决方案,这些解决方案具有创新性、颠覆性,并且足够可靠,值得信赖。在写这本书的时候,作者们的意图是交付一部超越传统烹饪书风格的作品:不仅提供代码示例,而且开发像大师一样探索内容所需的技术和思维方式;正如他们所说,内容为王!读者会注意到,这本书非常强调新闻分析,偶尔会引入其他数据集,如推文和金融数据。这种对新闻的强调不是偶然的;人们花了很大的精力试图集中在提供全球范围背景的数据集上。

这本书致力于解决的隐含问题是缺乏数据,无法提供人们如何以及为什么做出决策的适当背景。通常,可直接访问的数据源非常专注于问题细节,因此,在更广泛的数据集上可能非常轻,这些数据集提供了真正理解人们做出决策的驱动因素所需的行为背景。

考虑一个简单的例子,其中网站用户的关键信息,如年龄,性别,位置,购物行为,购买等是已知的,我们可能会使用这些数据来推荐产品的基础上,其他人“喜欢他们”一直在购买。

但是作为例外,需要更多的背景来解释为什么人们会这样做。当新闻报道暗示一场巨大的大西洋飓风正在接近佛罗里达海岸线,并可能在 36 小时内到达海岸时,也许我们应该推荐人们可能需要的产品。诸如用于保持电话充电的支持 USB 的电池组、蜡烛、手电筒、净水器等物品。通过了解决策的背景,我们可以进行更好的科学研究。

因此,虽然这本书肯定包含有用的代码,在许多情况下,独特的实现,它进一步深入到真正掌握数据科学所需的技术和技能;其中一些经常被忽视或根本不被考虑。凭借多年的商业经验,作者们利用他们丰富的知识将真实而令人兴奋的数据科学世界带入生活。

这本书涵盖了什么

第 1 章大数据科学生态系统,本章介绍了一种利用大规模数据取得成功的方法和伴随的生态系统。它侧重于将在后面章节中使用的数据科学工具和技术,并介绍了环境以及如何对其进行适当配置。此外,它还解释了一些与整体数据架构和长期成功相关的非功能性考虑事项。

第二章数据采集作为数据科学家,最重要的任务之一就是将数据准确加载到数据科学平台中。本章解释了如何在 Spark 中构建一个通用的数据接收管道,作为输入数据的许多输入的可重用组件,而不是无控制的、特别的过程。

第 3 章输入格式和模式,本章演示了如何将数据从原始格式加载到不同的模式中,从而使各种不同类型的下游分析能够在相同的数据上运行。考虑到这一点,我们将看看传统上很好理解的数据模式领域。我们将涵盖传统数据库建模的关键领域,并解释这些基石原则如何仍然适用于今天的 Spark。此外,在磨练我们的 Spark 技能的同时,我们将分析 GDELT 数据模型,并展示如何以高效和可扩展的方式存储这个大数据集。

第 4 章探索性数据分析,一个常见的误解是 EDA 只是为了发现数据集的统计属性,并提供如何利用数据集的见解。实际上,这还不是全部。完整的 EDA 将扩展这一想法,并包括对“在生产中使用该数据馈送的可行性”的详细评估它还要求我们了解如何为此数据集指定生产级数据加载例程,该例程可能会在“熄灯模式”下运行多年。本章提供了一种使用“数据分析”技术进行数据质量评估的快速方法,以加速该过程。

第 5 章Spark for Geographic Analysis,地理处理是 Spark 一个强大的新用例,本章演示如何入门。本章的目的是解释数据科学家如何使用 Spark 处理地理数据,以生成非常大的数据集的基于地图的强大视图。我们演示了如何通过 Spark 与 Geomesa 的集成轻松处理时空数据集,这有助于将 Spark 转变为复杂的地理处理引擎。本章稍后将利用这些时空数据应用机器学习来预测油价。

第 6 章抓取基于链接的外部数据,这一章旨在解释一种通用模式,通过在 URL 或通过 API(如 GDELT 和 Twitter)找到的外部内容来增强本地数据。我们提供了一个教程,使用 GDELT 新闻索引服务作为新闻 URLS 的来源,演示了如何构建一个网络规模的新闻扫描仪,从互联网上抓取感兴趣的全球突发新闻。我们进一步解释了如何使用专家网页抓取组件来克服规模的挑战,接下来是本章的总结。

第 7 章构建社区,本章旨在解决数据科学和大数据中的一个常见用例。随着越来越多的人在一起互动、交流、交换信息,或者只是分享对不同主题的共同兴趣,整个世界可以用一个图形来表示。数据科学家必须能够发现社区,找到影响者/主要贡献者,并发现可能的异常。

第八章构建推荐系统,如果要选择一个算法向公众展示数据科学,推荐系统肯定是在框架内的。如今,推荐系统无处不在;它们受欢迎的原因是它们的多功能性、实用性和广泛适用性。在本章中,我们将演示如何使用原始音频信号推荐音乐内容。

第 9 章新闻词典和实时标签系统虽然分层数据仓库将数据存储在文件夹的文件中,但典型的基于 Hadoop 的系统依赖于平面架构来存储您的数据。如果没有适当的数据治理或者对数据的本质没有清晰的理解,数据湖变成沼泽的可能性是不可否认的,像 GDELT 这样有趣的数据集只不过是一个包含大量非结构化文本文件的文件夹。在本章中,我们将描述一种创新的方法,以非监督的方式和接近实时的方式标记输入的 GDELT 数据。

第 10 章故事去重和突变在这一章中,我们将 GDELT 数据库去重并索引成故事,然后跟踪故事随时间的变化并了解它们之间的联系,它们可能如何突变,以及它们是否可能在不久的将来导致任何后续事件。本章的核心是 Simhash 的概念,它使用随机索引来检测近似重复和构建向量来降维。

第 11 章异常检测和情绪分析或许,2016 年最引人注目的事件是紧张的美国总统大选及其最终结果:唐纳德·特朗普(Donald Trump)总统当选,这场竞选将被长久铭记;尤其是它对社交媒体前所未有的使用,以及在用户中激起的激情,他们中的大多数人通过使用标签表达了他们的感受。在这一章中,我们不会试图预测结果本身,而是旨在使用实时推特来检测美国大选期间的异常推特。

第 12 章趋势演算早在“趋势是什么”的概念成为数据科学家研究的热门话题之前,就有一个较老的概念,至今仍未被数据科学很好地服务;这就是趋势。目前,对趋势的分析,如果可以称之为趋势的话,主要是由人们“目测”时间序列图表并提供解释来进行的。但是人们的眼睛在做什么呢?本章描述了一个在 Apache Spark 中实现的数值研究趋势的新算法:趋势演算。

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

第 14 章可扩展算法,在这一章中我们了解为什么有时即使是基本算法,尽管在小规模下工作,也会经常在“大数据”中失败。我们将了解如何在编写运行在海量数据集上的 Spark 作业时避免问题,并将了解算法的结构,以及如何编写可扩展到数千兆字节数据的定制数据科学分析。本章的特色领域包括:并行化策略、缓存、洗牌策略、垃圾收集优化和概率模型;解释这些如何帮助您充分利用 Spark 范例。

这本书你需要什么

Spark 2.0 与 Scala 2.11、Maven 和 Hadoop 一起贯穿全书。这是所需的基本环境,还使用了许多其他技术,这些技术将在相关章节中介绍。

这本书是给谁的

我们假设阅读这本书的数据科学家了解数据科学、常见的机器学习方法和流行的数据科学工具,并在他们的工作过程中运行概念证明研究,并构建原型。我们提供一本书,向这些读者介绍构建数据科学解决方案的先进技术和方法,向他们展示如何构建商业级数据产品。

惯例

在这本书里,你会发现许多区分不同种类信息的文本样式。以下是这些风格的一些例子和对它们的意义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“下一行代码读取链接,并将其分配给至BeautifulSoup函数。”

代码块设置如下:

import org.apache.spark.sql.functions._      

val rdd = rawDS map GdeltParser.toCaseClass    
val ds = rdd.toDS()     

// DataFrame-style API 
ds.agg(avg("goldstein")).as("goldstein").show() 

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

spark.sql("SELECT V2GCAM FROM GKG LIMIT 5").show 
spark.sql("SELECT AVG(GOLDSTEIN) AS GOLDSTEIN FROM GKG WHERE GOLDSTEIN IS NOT NULL").show()

任何命令行输入或输出都编写如下:

$ cat 20150218230000.gkg.csv | gawk -F"\t" '{print $4}'

新名词重要词语以粗体显示。你在屏幕上看到的单词,例如菜单或对话框中的单词,出现在这样的文本中:“为了下载新模块,我们将转到文件 | 设置 | 项目名称 | 项目解释器

警告或重要提示会出现在这样的框中。

类型

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。要向我们发送一般反馈,只需给 feedback@packtpub.com 发电子邮件,并在邮件主题中提及书名。如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

你可以从你在http://www.packtpub.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

您可以按照以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的 SUPPORT 选项卡上。
  3. 点击代码下载&勘误表
  4. 搜索框中输入图书名称。
  5. 选择要下载代码文件的书籍。
  6. 从您购买这本书的下拉菜单中选择。
  7. 点击代码下载

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR / 7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip / PeaZip

这本书的代码包也托管在 GitHub 上,网址为。我们还有来自丰富的图书和视频目录的其他代码包,可在https://github.com/PacktPublishing/获得。看看他们!

下载本书的彩色图片

我们还为您提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助您更好地理解输出中的变化。您可以从https://www . packtpub . com/sites/default/files/downloads/MasteringSparkforDataScience _ color images . pdf下载此文件。

勘误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现一个错误,也许是文本或代码中的错误,如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表提交表链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材料的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请联系我们在 copyright@packtpub.com 的链接到可疑的盗版材料。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果你对这本书的任何方面有问题,你可以联系我们在 questions@packtpub.com,我们将尽最大努力解决这个问题。