描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121351662
使用Python、Spark、Elasticsearch、Kafka、MongoDB、D3.js构建、部署、完善任意规模的数据分析应用;
帮助产品团队学会使用敏捷的方式协作开发分析应用来保障工作成效;
帮助你成长为数据科学与数据分析团队的主力成员。
前言 …………………………………………………………………………………….. xiv
第Ⅰ部分 准备工作
第1章 理论 ………………………………………………………………………………3
导论 ……………………………………………………………………………………………………………..3
定义 ……………………………………………………………………………………………………………..5
方法学 ………………………………………………………………………………………………….5
敏捷数据科学宣言 ………………………………………………………………………………..6
瀑布模型的问题 ………………………………………………………………………………………….10
研究与应用开发 ………………………………………………………………………………….11
敏捷软件开发的问题 …………………………………………………………………………………..14
终质量:偿还技术债 …………………………………………………………………………14
瀑布模型的拉力 ………………………………………………………………………………….15
数据科学过程 ……………………………………………………………………………………………..16
设置预期 …………………………………………………………………………………………….17
数据科学团队的角色 …………………………………………………………………………..18
认清机遇与挑战 ………………………………………………………………………………….19
适应变化 …………………………………………………………………………………………….21
过程中的注意事项 ………………………………………………………………………………………23
代码审核与结对编程 …………………………………………………………………………..25
敏捷开发的环境:提高生产效率 …………………………………………………………..25
用大幅打印实现想法 …………………………………………………………………………..27
第2章 敏捷工具 ……………………………………………………………………..29
可伸缩性=易用性 ………………………………………………………………………………………30
敏捷数据科学之数据处理 ……………………………………………………………………………30
搭建本地环境 ……………………………………………………………………………………………..32
配置要求 …………………………………………………………………………………………….33
配置Vagrant ………………………………………………………………………………………..33
下载数据 …………………………………………………………………………………………….33
搭建EC2环境 ………………………………………………………………………………………………34
下载数据 …………………………………………………………………………………………….38
下载并运行代码 ………………………………………………………………………………………….38
下载代码 …………………………………………………………………………………………….38
运行代码 …………………………………………………………………………………………….38
Jupyter笔记本 ………………………………………………………………………………………39
工具集概览 …………………………………………………………………………………………………39
敏捷开发工具栈的要求 ……………………………………………………………………….39
Python 3 ……………………………………………………………………………………………..39
使用JSON行和Parquet序列化事件 ………………………………………………………..42
收集数据 …………………………………………………………………………………………….45
使用Spark进行数据处理 ………………………………………………………………………45
使用MongoDB发布数据 ………………………………………………………………………48
使用Elasticsearch搜索数据 …………………………………………………………………..50
使用Apache Kafka分发流数据 ……………………………………………………………..54
使用PySpark Streaming处理流数据 ………………………………………………………57
使用scikit-learn与Spark MLlib进行机器学习 …………………………………………58
使用 Apache Airflow(孵化项目)进行调度 …………………………………………….59
反思我们的工作流程 …………………………………………………………………………..70
轻量级网络应用 ………………………………………………………………………………….70
展示数据 …………………………………………………………………………………………….73
本章小结 …………………………………………………………………………………………………….75
第3章 数据 …………………………………………………………………………….77
飞行航班数据 ……………………………………………………………………………………………..77
航班准点情况数据 ………………………………………………………………………………78
OpenFlights数据库 ……………………………………………………………………………….79
天气数据 …………………………………………………………………………………………………….80
敏捷数据科学中的数据处理 ………………………………………………………………………..81
结构化数据vs.半结构化数据 ………………………………………………………………..81
SQL vs. NoSQL ……………………………………………………………………………………………82
SQL …………………………………………………………………………………………………….83
NoSQL与数据流编程 …………………………………………………………………………..83
Spark: SQL NoSQL …………………………………………………………………………..84
NoSQL中的表结构 ………………………………………………………………………………84
数据序列化 …………………………………………………………………………………………85
动态结构表的特征提取与呈现 …………………………………………………………….85
本章小结 …………………………………………………………………………………………………….86
第Ⅱ部分 攀登金字塔
第4章 记录收集与展示 …………………………………………………………….89
整体使用 …………………………………………………………………………………………………….90
航班数据收集与序列化 ……………………………………………………………………………….91
航班记录处理与发布 …………………………………………………………………………………..94
把航班记录发布到MongoDB ………………
这几年,大数据、人工智能都是计算机学科中非常热门的话题,数据科学也越来越受到各公司的关注。我接触到的很多不同行业的公司都对大数据与人工智能的应用跃跃欲试,甚至部分公司早已尝到其中的甜头。不过还有很多公司并没有真正用上它们那些本应蕴含着无穷价值的数据,也有很多公司已经学会从数据中挖掘信息,但得到的信息无法及时转化为真正的价值。毕竟大数据还是比较新的技术,大多数公司还在探索中前进。很多公司早就拥有了自己的应用开发团队,雇佣一些数据科学的专家也并不难,难的是如何让开发工程师和数据科学家理解对方的工作,把他们整合到一个团队中,从而真正创造出价值。
本书作者对数据有天生的热情,且通过在各种行业的工作经历形成了对不同角色的理解,更拥有多年的实际数据分析应用开发经验。在他的职业生涯中,也曾遇到过很多公司在尝试运用数据分析时会遇到的各种问题。如今,他在咨询公司工作,专门帮助各种公司进行大数据方面的数据分析。本书正是作者多年经验的总结与升华,涵盖了从团队建设、工作制度到工具选择、任务划分与执行的方方面面。本书还以一个完整的项目为例,贯穿全书,展示了敏捷数据科学的整个流程,这也是我喜欢本书的地方。从具体案例出发,让有需求的读者能够更快地依葫芦画瓢,也让初学者能够从做中学,让读者能根据自己的感受,更好地领会作者提出的“敏捷数据科学”的精髓。
Spark 是当前大数据领域为主流的项目,有着远超Hadoop MapReduce 的性能,可以说是大数据领域的事实标准。能有今天的地位,Spark 的易用性功不可没。正因此,作者在本书中选择了Spark 作为大数据处理框架。易于上手的Spark 确实是敏捷项目的不二选择。
不过,Spark 虽然兼具易用与高性能的特点,但不代表Spark 的性能不会在实际应用中出现问题。事实上,随着业务日趋复杂,Spark 应用也会遇到各种不能通过扩展集群规模来解决的问题,并不是用上Spark 就代表算法能够适用于海量数据的场景了,这也是本书缺失的部分。不过不用过于担心,高性能的算法与集群架构也都是慢慢演进出来的,不妨让我们在下一个敏捷冲刺中不断完善我们的应用吧!
翻译本书的时候我还在英特尔工作,英特尔是我工作的家公司,在这里我有幸从2012年起接触大数据,并从2014 年起就接触到Spark。虽然我已经离开,但我会始终感激和怀念在英特尔成长的时光。本书的翻译主要在周末和假期完成,感谢家人和朋友们对我的关心和理解。感谢博文视点的刘恩惠老师和顾慧芳老师在本书审校工作中的辛勤付出,感谢张玲老师引荐我翻译本书,也感谢刘恩惠老师和张玲老师在我拖稿时对我的宽容和鼓励。
这是一个发展迅猛的领域,本书出版时,书中的许多工具(比如Spark)可能已经又有了很多更新;本书所涉及的远远不止大数据和数据分析,还包括前端开发、团队管理等内容。由于我水平有限,难免有纰漏之处,希望读者能不吝指正,有疑惑之处,不妨也与我探讨。我的邮箱是[email protected]。
王道远
2018 年夏
前言
写作本书第1 版的那段日子里,我刚好因为一次车祸而残疾,每天忍受疼痛折磨,双手也有些不听使唤。当时,一个叫作“职业浏览器”的项目的失败经历正困扰着我,为了从阴影中走出来,我用iPad 在床上和沙发上写完了本书,尽管那时我的手都没办法切菜了。我在那个项目发布前几周受了伤,还想着坚持把项目做上线,日夜奋战,非常痛苦。在做项目的过程中,我们犯了许多低级错误,让我一直垂头丧气。终产品糟透了。项目失败的挫折感不时让我难受,而我背部的慢性疼痛更是很少放过我。我的心脏也出了一些问题,心率下降了三分之一,记忆力也出现了衰退。我仿佛进入了一个幽暗的空间,难以找到出路。我要恢复起来,与失败抗争。说来有些奇怪,为了让自己恢复,我写了第1 版书。我要把我能给团队同事的指导写下来,确保下一个项目成功。我想让自己摆脱这段经历。更重要的是,我想通过帮助别人,让我的人生重新获得意义,不让自己被残疾击垮。这样一件为大众服务以确保其他人不会重复我的错误的好事,我认为是值得去做的。那个失败项目暴露出了一个比我自身的处境更严重的问题,那就是大多数研究都停留在纸面上,从未让能够获益的人实际使用到。这本书就是一剂良方,是应用性研究的方法论,让研究成果能以产品的形式真正面世。
虽然听起来有些戏剧性,但我还是想在介绍第2 版之前提一提写第1 版时的个人情况。尽管那一版书对我来说有特殊的意义,但对于数据科学这个欣欣向荣的领域而言只做出了很小的贡献。但是我为它而自豪。我在那本书中获得了救赎,它让我重新找回了感觉,让我及时从病痛中恢复,让我摆脱失败的痛苦而获得了成就的喜悦,这就是第1版的情况。
在第2 版中,我希望能做到更多。简单地说,我希望能引导初出茅庐的数据科学家,让其快速成长为数据分析应用开发者。我把自己在三个Hadoop 团队与一个Spark 团队中获得的构建分析应用的经验进行了总结和提炼。这次改版中,编程语言使用的是数据科学的通用语言Python,而选择的大数据平台是Spark。希望本书能成为读者的指南,让读者快速学会如何构建足以应对各种数据规模的分析应用。
Spark 取代Hadoop/MapReduce 成为了处理大规模数据的主流方式,因此我们在这一版中使用Spark 来讲解。不仅如此,根据我们团队在工作中对敏捷数据科学的进一步理解,本书对敏捷数据科学方法论的理论和发展也做了进一步完善。希望第1版的读者还可以从第2版中获得提高,也希望比起相对更适合Hadoop 用户阅读的第1 版,这一版能更好地服务于Spark 用户。
敏捷数据科学有两大目标:一是为了使用Python 和Spark 搭建出任意规模的数据分析应用,二是帮助产品团队学会使用敏捷的方式协作开发分析应用来保障工作成效。
敏捷数据科学的邮件列表
你可以在邮件列表([email protected])或网页(https://groups.google.com/d/forum/agile-data-science)中学到的敏捷数据科学知识。
我为本书维护了一个网页(http://datasyndrome.com/book),里面有的更新,以及为读者准备的相关资料。
产品分析咨询公司Data Syndrome
我创办了一家叫作Data Syndrome 的咨询机构来推广本书中的方法论和技术栈。如果你要在你的公司里实践敏捷数据科学并且需要这方面的帮助,或者是需要构建数据产品方面的帮助,又或者需要“大数据”方面的培训,你可以通过我的邮箱([email protected])或网站(http://llc.datasyndrome.com/)来联系我。
Data Syndrome 提供视频课程《使用Kafka、PySpark、Spark MLlib 和Spark Streaming 进行实时预测分析》(Realtime Predictive Analytics with Kafka,PySpark, Spark MLlib and Spark Streaming. http://datasyndrome.com/video),使用了第7章和第8章的材料,教观看者如何用Kafka、Spark Streaming 及网络应用的前端页面构建出整套的实时预测系统。
如果想进一步了解,请访问http://datasyndrome.com/video 或联系[email protected]。
在线培训
Data Syndrome 正在研制针对数据科学团队和数据工程团队的全套在线大数据培训课程。
目前提供的课程可以根据需求进行自定义,包括以下几个主题。
敏捷数据科学
持续三天的课程,涵盖了全栈分析应用的构建。在内容上与本书相近,可以将数据科学家训练为全栈应用开发者。
实时预测分析
一天即可完成,时长总共6 小时。包括如何使用Kafka 和Spark Streaming 及网络应用前端页面构建整套的实时预测系统。
PySpark 介绍
一天即可完成,时长3 小时。向参与者介绍如何使用Spark 的Python 接口进行基本的数据处理。终教会参与者如何使用Spark MLlib 构建一个分类器模型来预测航班延误。
详情请访问http://datasyndrome.com/training 或联系[email protected]。
本书目标读者
本书的目的是帮助初学者和初出茅庐的数据科学家成长为数据科学与数据分析团队的主力成员。本书想要帮助工程师、分析师、数据科学家以敏捷的方式来使用Hadoop 在大数据上进行工作。本书介绍的敏捷方法论很适合大数据领域。
本书是为需要开发软件来分析数据的程序员而写的。设计师和产品经理可能更适合第1 章、第2 章和第5 章,这些章节主要作为敏捷过程的导论,没有专注于编码运行。
本书假设你在类UNIX 环境中工作,没有为Windows 用户提供示例,不过Windows 用户可以使用Cygwin 尝试。
本书主要结构
本书分为两个部分。第Ⅰ部分介绍的是我们在第Ⅱ部分中需要用到的数据集和工具集。第Ⅰ部分故意写得简明扼要,只是为了尽可能快地介绍这些工具。第Ⅱ部分会更深入地探讨这些工具的使用,所以如果在读第Ⅰ部分时感觉有些不知所措也不用担心。第Ⅰ部分的章节如下。
第1 章 理论
介绍敏捷数据科学的方法论。
第2 章 敏捷工具
介绍要用的工具集,并且讲解工具如何上手与安装。
第3 章 数据
描述本书中使用的数据集。
第Ⅱ部分是我们使用敏捷数据科学来构建一个分析应用的教程。这是一份笔记本式的分析应用构建指南。我们逐层攀登数据价值金字塔,始终应用敏捷的原则。这一部分会展示在敏捷迭代进程中一步一步发掘数据价值的方法。第Ⅱ部分由以下所列章节组成。
评论
还没有评论。