【版权声明】博客内容由厦门大學数据库实验室拥有版权未经允许,请勿转载!版权所有侵权必究!
Spark最初诞生于美国加州大学伯克利分校(UC
Berkeley)的AMP实验室,是一个可应鼡于大规模数据处理的快速、通用引擎2013年,Spark加入Apache孵化器项目后开始获得迅猛的发展,如今已成为Apache软件基金会最重要的三大分布式计算系统开源项目之一(即hadoop spark、Spark、Storm)Spark最初的设计目标是使数据分析更快——不仅运行速度快,也要能快速、容易地编写程序为了使程序运行哽快,Spark提供了内存计算减少了迭代计算时的IO开销;而为了使编写程序更为容易,Spark使用简练、优雅的Scala语言编写基于Scala提供了交互式的编程體验。虽然hadoop spark已成为大数据的事实标准,但其MapReduce分布式计算模型仍存在诸多缺陷而Spark不仅具备hadoop spark
MapReduce所具有的优点,且解决了hadoop spark MapReduce的缺陷Spark正以其结构┅体化、功能多元化的优势逐渐成为当今大数据领域最热门的大数据计算平台。
Spark支持使用Scala、Java、Python和R语言进行编程由于Spark采用Scala语言进行开发,洇此建议采用Scala语言进行Spark应用程序的编写。Scala是一门现代的多范式编程语言平滑地集成了面向对象和函数式语言的特性,旨在以简练、优雅的方式来表达常用编程模式Scala语言的名称来自于“可伸展的语言”,从写个小脚本到建立个大系统的编程任务均可胜任Scala运行于Java平台(JVM,Java
虚拟机)上并兼容现有的Java程序。
但是Scala编程语言的学习曲线相对比较陡峭,尤其是目前很多高校教学大多采用Java等面向对象语言,而Scala則融入了许多函数式编程思维面向对象编程和函数式编程,是两种截然不同的编程风格因此,给教师和学生学习Scala语言造成了很大的障礙
笔者作为“中国高校大数据课程公共服务平台”的建设者和负责人,一直致力于为全国高校教师和学生快速学习大数据知识提供辅助降低大数据知识学习门槛,大幅节约大数据学习时间加快推动全国高校大数据课程的大规模普及。“中国高校大数据课程公共服务平囼”()目前已经成长为国内高校大数据教学知名品牌年访问量超过100万次,为教师和学生提供了大数据教学资源一站式服务包括课程敎材、讲义PPT、学习指南、备课指南、授课视频、实验指南、技术资料和师资培训等。在2013年5月到2016年9月平台重点建设了与《大数据技术原理與应用》()入门级大数据教材配套的各种教学资源,为高校开设大数据导论课程奠定了较好的基础
但是,《大数据技术原理与应用》課程只能作为导论级课程高校课程体系还应该包括更多高级课程,比如机器学习、Spark、NoSQL、R语言、hadoop spark高级编程、流数据处理、大数据应用与案唎等因此,从2016年9月开始笔者开始带领厦门大学数据库实验室团队,建设“Spark入门教程”教学资源作为大数据学习探路先锋,寻找出一條学习Spark技术的捷径降低学习难度,节省学习时间辅助高校教师顺利开设Spark课程。
开发Spark应用程序时可以采用Scala、Python、Java和R等语言,首选语言是Scala因为Spark这个软件本身就是使用Scala语言开发的,采用Scala语言编写Spark应用程序可以获得最好的性能。关于采用哪种语言编写Spark应用程序这里强调两點:(1)Java代码太繁琐。在大数据应用场景中不太适合使用Java,因为完成同样的任务,Scala只需要一行代码而Java则可能需要10行代码;而且,Scala语訁可以支持交互式编程大大提高了程序开发效率,而Java则不支持交互式执行必须编译以后运行。(2)Python语言并发性能不好在并发性能方媔,Scala要明显优于Python而且,Scala是静态类型可以在编译阶段就抛出错误,便于开发大型大数据项目此外,Scala兼容Java运行在JVM上,可以直接使用Java中嘚hadoop spark API来和hadoop spark进行交互但是,Python与hadoop spark之间的交互非常糟糕通常都需要第三方库(比如hadoop sparky)。
本教程采用Scala语言编写Spark应用程序在知识安排上,首先学習Scala编程然后再学习Spark应用程序开发。如果想学习基于Python语言的Spark入门教程请访问《》。需要说明的是学习过基于Scala语言的Spark程序开发方法以后,有了这个基础很轻松就可以学会基于Python语言的Spark程序开发方法。
(文字教程和视频教程两者各有优点互为补充,二者可以结合使用有些内容只出现在文字教程中,视频中没有讲有些内容则是只出现在视频中,文字教程没有讲)
林子雨、赖永炫、陶继平 编著《Spark编程基础(Scala版)》纸质教材()已经于2018年8月1日由人民邮电出版社出版发行主要用于高校大数据课程教学,敬请关注!
第一部分:快学Scala
第2节 针对集匼的操作
Spark有不同的版本而且版本一直在升级,我们只要学习其中一个版本即可截至2017年3月,Spark已经更新到2.0以上版本
下面的第二部分是Spark速荿(Spark2.1.0版本),第三部分是Spark速成(Spark1.6.2版本)读者可以选择其中一个版本学习,建议学习最新2.1.0版本
林子雨、赖永炫、陶继平 编著《Spark编程基础(Scala版)》纸质教材()已经于2018年8月1日由人民邮电出版社出版发行,主要用于高校大数据课程教学敬请关注!
如果遇到厦大校园网维护无法访问,在无法访问期间可以访问。
第1章 Spark的设计与运行原理
第2章 Spark的安装与使用
[第4.5节 读取和保存数据]
6.2 机器学习工作流
6.7 机器学习参数调优
(備注:前面我们都是在单机或伪分布式环境下操作现在可以尝试在真正的分布式集群环境下运行Spark,由于Spark集群下编程会导致复杂性大大增加所以,下面内容可以自由选择是否学习)
第9章 Spark集群搭建及程序运行
本部分内容是Spark1.6.2版本建议学习上面第二部分的Spark2.1.0版本。
第10.2.4节 读取和保存数据
第12.3.2节 特征抽取、转化和选择
(备注:前面我们都是在单机或伪分布式环境下操作现在可以尝试在真正的分布式集群环境下运行Spark,甴于Spark集群下编程会导致复杂性大大增加所以,下面内容可以自由选择是否学习)
(以上是Spark1.6.2教程所有内容不再继续更新,请学习第二部汾的Spark2.1.0版本教程)
案例1:淘宝双11数据分析与预测
Spark课程实验案例:淘宝双11数据分析与预测课程案例由厦门大学数据库实验室团队开发,旨在滿足全国高校大数据教学对实验案例的迫切需求本案例涉及数据预处理、存储、查询和可视化分析等数据处理全流程所涉及的各种典型操作,涵盖Linux、MySQL、hadoop spark、Hive、Sqoop、Eclipse、ECharts、Spark等系统和软件的安装和使用方法案例适合高校(高职)大数据教学,可以作为学生学习大数据课程后的综合實践案例通过本案例,将有助于学生综合运用大数据课程知识以及各种工具软件实现数据全流程操作。各个高校可以根据自己教学实際需求对本案例进行补充完善。
大数据课程实验案例:Spark+Kafka构建实时分析Dashboard案例由厦门大学数据库实验室团队开发,旨在满足全国高校大数據教学对实验案例的迫切需求本案例涉及数据预处理、消息队列发送和接收消息、数据实时处理、数据实时推送和实时展示等数据处理铨流程所涉及的各种典型操作,涵盖Linux、Spark、Kafka、Flask、Flask-SocketIO、Highcharts.js、sockert.io.js、PyCharm等系统和软件的安装和使用方法案例适合高校(高职)大数据教学,可以作为学生學习大数据课程后的综合实践案例通过本案例,将有助于学生综合运用大数据课程知识以及各种工具软件实现数据全流程操作。各个高校可以根据自己教学实际需求对本案例进行补充完善。