据估计,2013年全世界产生了大约4.4ZB(词头Z代表1021)信息量的数据!而到2020年,预计人类将会产生10倍于2013年的数据量。随着字面上的数字越来越大,加上人们需求的日益增长,为了使这些数据更有意义,2004年来自Google的Jeffrey Dean和Sanjay Ghemawat发表了一篇开创性的论文《MapReduce:Simplified Data Processing on Large Clusters》。至此,利用这一概念的技术开始快速增多,Apache Hadoop也开始迅速变得流行起来,最终创建了一个Hadoop的生态系统,包括抽象层的Pig、Hive和Mahout,都是利用了map和reduce的简单概念。
然而,即使拥有每天都分析过滤海量数据的能力,MapReduce始终是一个限制相当严格的编程框架。此外,大多数的任务还要求读取、写入磁盘。认识到这些缺点,2009年Matei Zaharia将Spark作为他博士课题的一部分开始研究。Spark在2012年首次发布。虽然Spark是基于和MapReduce相同的概念,但其先进的数据处理方法和任务组织方式使得它比Hadhoop要快100倍(对于内存计算)。
在这本书中,我们将指导你使用Python了解Apache Spark的最新性能,包括如何看懂结构化和非结构化的数据,如何使用PySpark中一些基本的可用数据类型,生成机器学习模型,图像操作,阅读串流数据,在云上部署模型。每一章力求解决不同的问题,并且我们也希望看完这本书之后,你可以掌握足够的知识来解决其他我们还没来得及在书中讲解的问题。
本书的主要内容第1章通过技术和作业的组织等概念提供了对Spark的介绍。
第2章介绍了RDD、基本原理、PySpark中可用的非模式化数据结构。
第3章详细介绍了DataFrame数据结构,它可以弥合Scala和Python之间在效率方面的差距。
第4章引导读者了解Spark环境中的数据清理和转换的过程。
第5章介绍了适用于RDD的机器学习库,并回顾了最有用的机器学习模型。
第6章涵盖了当前主流的机器学习库,并且提供了目前可用的所有模型的概述。
第7章引导你了解能轻松利用图解决问题的新结构。
第8章介绍了Spark和张量流(TensorFlow)领域中深度学习(Deep Learning)的连接桥梁。
第9章描述Blaze是如何跟Spark搭配使用以更容易地对多源数据进行抽象化的。
第10章介绍了PySpark中可用的流工具。
第11章一步步地指导你运用命令行界面完成代码模块化并提交到Spark执行。
本书中我们随意使用了Anaconda的预装版Python模块。GraphFrames和TensorFrames也可以在启动Spark实例时动态加载:载入时你的电脑需要联网。如果有的模块尚未安装到你的电脑里,也没有关系,我们会指导你完成安装过程。
本书的读者对象想要学习大数据领域发展最迅速的技术即Apache Spark的每一个人,都可以阅读此书。我们甚至希望还有来自于数据科学领域更高级的从业人员,能够找到一些令人耳目一新的例子以及更有趣的主题。
本书约定警告或重要的笔记提示和技巧下载代码示例你可以从http://www.packtpub.com下载代码文件。你也可以访问华章图书官网通过注册并登录个人账号,下载本书的源代码。
下载本书彩图我们还提供了一个PDF文件,其中包含本书中使用的截图和彩图,可以帮助读者更好地了解输出的变化。