Spark编程基础
上QQ阅读APP看书,第一时间看更新

前言

大数据时代的来临,给各行各业带来了深刻的变革。大数据像能源、原材料一样,已经成为提升国家和企业竞争力的关键要素,被称为“未来的新石油”。正如电力技术的应用引发了生产模式的变革一样,基于互联网技术而发展起来的大数据技术的应用,将会为人们的生产和生活带来颠覆性的影响。

目前,大数据技术正处于快速发展之中,不断有新的技术涌现,Hadoop和Spark等技术成为其中的佼佼者。在Spark流行之前,Hadoop俨然已成为大数据技术的事实标准,在企业中得到了广泛的应用,但其本身还存在诸多缺陷,最主要的是MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而只适用于离线批处理的应用场景。Spark在设计上充分吸收借鉴了MapReduce的精髓并加以改进,同时,采用了先进的DAG执行引擎,以支持循环数据流与内存计算,因此,在性能上比MapReduce有了大幅度的提升,从而迅速获得了学术界和业界的广泛关注。作为大数据计算平台的后起之秀,Spark在2014年打破了Hadoop保持的基准排序纪录,此后逐渐发展成为大数据领域最热门的大数据计算平台之一。

随着大数据在企业应用的不断深化,企业对大数据人才的需求日益增长。为了有效地满足不断增长的大数据人才需求,国内高校从2016年开始设立“数据科学与大数据技术专业”,着力培养数据科学与工程领域的复合型高技术人才。课程体系的建设和课程教材的创作,是高校大数据专业建设的核心环节。

厦门大学数据库实验室在大数据教学领域辛勤耕耘、开拓创新,成为国内高校大数据教学资源的有力贡献者。实验室在积极践行O2O大数据教学理念的同时,提出了“以平台化思维构建全国高校大数据课程公共服务体系”的全新服务理念,成为推进国内高校大数据教学不断向前发展的一支重要力量,在全国高校之中形成了广泛的影响。2015年7月,实验室编写出版了国内高校第一本系统性介绍大数据知识的专业教材——《大数据技术原理与应用》,受到了广泛的好评,目前已经成为国内众多高校的入门级大数据课程的开课教材。同时,实验室建设了国内高校首个大数据课程公共服务平台(网址:http://dblab.xmu.edu.cn/post/bigdata-teachingplatform/),为全国高校教师和学生提供大数据教学资源一站式“免费”在线服务,包括课程教材、讲义PPT、课程习题、实验指南、学习指南、备课指南、授课视频和技术资料等,自2013年5月建设以来,定位明确,进展顺利,目前平台每年访问量超过100万次,成为全国高校大数据教学的知名品牌。

《大数据技术原理与应用》定位为入门级大数据教材,以“构建知识体系、阐明基本原理、开展初级实践、了解相关应用”为原则,旨在为读者搭建起通向大数据知识空间的桥梁和纽带,为读者在大数据领域深耕细作奠定基础、指明方向。高校在开设入门级课程以后,可以根据自己的实际情况,开设进阶级的大数据课程,继续深化对大数据技术的学习,而Spark是目前比较理想的大数据进阶课程学习内容。因此,厦门大学数据库实验室组织具有丰富经验的一线大数据教师精心编写了本教材。

为了确保教材质量,在出版纸质图书之前,实验室已经于2016年10月通过实验室官网免费共享了简化版的Spark在线教程和相关教学资源,同时,该在线教程也已经用于厦门大学计算机科学系研究生的大数据课程教学,并成为全国高校大数据课程教师培训交流班的授课内容。实验室根据读者对在线Spark教程的大量反馈意见以及在教学实践中发现的问题,对Spark在线教程进行了多次修正和完善,这些前期准备工作,都为纸质图书的编著出版打下了坚实的基础。

本书共7章,详细介绍了Spark的环境搭建和基础编程方法。第1章介绍大数据关键技术,帮助读者对大数据技术形成总体性认识以及了解Spark在其中所扮演的角色;第2章介绍Spark的设计与运行原理;第3章介绍Spark的环境搭建和使用方法,为开展Spark编程实践铺平道路;第4章介绍RDD编程,包括RDD的创建、操作API、持久化、分区以及键值对RDD等,这章知识是开展Spark高级编程的基础;第5章介绍Spark中用于结构化数据处理的组件Spark SQL,包括DataFrame数据模型、创建方法和常用操作等;第6章介绍Spark Streaming,这是一种构建在Spark上的流计算框架,可以满足对流式数据进行实时计算的需求;第7章介绍Spark的机器学习库MLlib,包括MLlib的基本原理、算法、模型选择和超参数调整方法等。

本书面向高校计算机、软件工程、数据科学与大数据技术等专业的学生,可以作为专业必修课或选修课教材。本书由林子雨、赖永炫和陶继平执笔,其中,林子雨负责全书规划、统稿、校对和在线资源创作,并撰写第1、2、4、5、6章的内容,赖永炫负责撰写第7章的内容,陶继平负责撰写第3章的内容。在撰写过程中,厦门大学计算机科学系硕士研究生阮榕城、薛倩、魏亮、曾冠华、程璐、林哲等做了大量的辅助性工作,在此,向这些同学的辛勤工作表示衷心的感谢。同时,感谢夏小云老师在书稿校对过程中的辛勤付出。

本书配套的官方网站是http://dblab.xmu.edu.cn/post/spark/,免费提供全部配套资源的在线浏览和下载,并接受错误反馈和发布勘误信息。同时,Spark作为大数据进阶课程,在学习过程中会涉及大量相关的大数据基础知识以及各种大数据软件的安装和使用方法,因此,推荐读者访问厦门大学数据库实验室建设的国内高校首个大数据课程公共服务平台(http://dblab.xmu.edu.cn/post/bigdata-teaching-platform/),来获得必要的辅助学习内容。

本书在撰写过程中,参考了大量的网络资料和相关书籍,对Spark技术进行了系统梳理,有选择性地把一些重要知识纳入本书。由于笔者能力有限,本书难免存在不足之处,望广大读者不吝赐教。

林子雨
厦门大学计算机科学系数据库实验室
2018年1月