子雨大数据之Spark入门教程(Python版)

大数据技术原理与应用

【版权声明】博客内容由厦门大学数据库实验室拥有版权,未经允许,请勿转载!版权所有,侵权必究!
本教程改编自林子雨老师编著《Spark入门教程(Scala版)》,本教程中内容均直接复制《Spark入门教程(Scala版)》,然后修改成Python语言版本。
子雨大数据之Spark入门

说明:
(1)开发Spark应用程序时,可以采用Scala、Python、Java和R等语言,首选语言是Scala,因为Spark这个软件本身就是使用Scala语言开发的。如果想学习基于Scala的Spark入门教程,请访问《子雨大数据之Spark入门教程(Scala版)
(2)本教程采用Python语言编写Spark应用程序,在知识安排上,首先学习Python编程,然后再学习Spark应用程序开发。如果读者此前没有学习过Python,建议首先学习厦门大学数据库实验室编写的《Python入门教程

Spark最初诞生于美国加州大学伯克利分校(UC Berkeley)的AMP实验室,是一个可应用于大规模数据处理的快速、通用引擎。2013年,Spark加入Apache孵化器项目后,开始获得迅猛的发展,如今已成为Apache软件基金会最重要的三大分布式计算系统开源项目之一(即Hadoop、Spark、Storm)。Spark最初的设计目标是使数据分析更快——不仅运行速度快,也要能快速、容易地编写程序。为了使程序运行更快,Spark提供了内存计算,减少了迭代计算时的IO开销;虽然,Hadoop已成为大数据的事实标准,但其MapReduce分布式计算模型仍存在诸多缺陷,而Spark不仅具备Hadoop MapReduce所具有的优点,且解决了Hadoop MapReduce的缺陷。Spark正以其结构一体化、功能多元化的优势逐渐成为当今大数据领域最热门的大数据计算平台。

笔者作为“中国高校大数据课程公共服务平台”的建设者和负责人,一直致力于为全国高校教师和学生快速学习大数据知识提供辅助,降低大数据知识学习门槛,大幅节约大数据学习时间,加快推动全国高校大数据课程的大规模普及。“中国高校大数据课程公共服务平台”(平台主页)目前已经成长为国内高校大数据教学知名品牌,年访问量超过100万次,为教师和学生提供了大数据教学资源一站式服务,包括课程教材、讲义PPT、学习指南、备课指南、授课视频、实验指南、技术资料和师资培训等。在2013年5月到2016年9月,平台重点建设了与《大数据技术原理与应用》(教材官网)入门级大数据教材配套的各种教学资源,为高校开设大数据导论课程奠定了较好的基础。

但是,《大数据技术原理与应用》课程只能作为导论级课程,高校课程体系还应该包括更多高级课程,比如机器学习、Spark、NoSQL、R语言、Hadoop高级编程、流数据处理、大数据应用与案例等。因此,从2016年9月开始,笔者开始带领厦门大学数据库实验室团队,建设“Spark入门教程”教学资源,作为大数据学习探路先锋,寻找出一条学习Spark技术的捷径,降低学习难度,节省学习时间,辅助高校教师顺利开设Spark课程。

开发Spark应用程序时,可以采用Scala、Python、Java和R等语言,首选语言是Scala,因为Spark这个软件本身就是使用Scala语言开发的。如果想学习基于Scala的Spark入门教程,请访问《子雨大数据之Spark入门教程(Scala版)

本教程采用Python语言编写Spark应用程序,在知识安排上,首先学习Python编程,然后再学习Spark应用程序开发。如果读者此前没有学习过Python,建议首先学习厦门大学数据库实验室编写的《Python入门教程

教程目录

推荐相关教程:《子雨大数据之Spark入门教程(Scala版)
本教程采用Python语言编写Spark应用程序,如果读者此前没有学习过Python,建议首先学习《Python入门教程》,然后再学习下面的内容。如果读者已经具备Python语言知识,可以直接学习下面内容。

第1章 Spark的设计与运行原理
1.1 Spark简介
1.2 Spark运行架构
1.3 RDD的设计与运行原理
1.4 Spark的部署模式
第2章 Spark的安装与使用
2.1 Spark的安装和使用
2.2 第一个Spark应用程序:WordCount
2.3 使用开发工具Visual Studio Code 编写Spark应用程序
2.4 Spark集群环境搭建
2.5 在集群上运行Spark应用程序
第3章 Spark编程基础
3.1 Spark入门:RDD编程
3.2 Spark入门:键值对RDD
3.3 Spark入门:共享变量
3.4 数据读写
3.4.1 Spark入门:文件数据读写
3.4.2 读写HBase数据

第四章
4.1 Spark SQL简介
4.2 DataFrame与RDD的区别
4.3 DataFrame的创建
4.4 从RDD转换得到DataFrame
[第4.5节 读取和保存数据]
4.5.1 读写Parquet(DataFrame)
4.5.2 通过JDBC连接数据库(DataFrame)
4.5.3 连接Hive读写数据
第5章 Spark Streaming
5.1 流计算简介
5.2 Spark Streaming简介
第5.3节 DStream操作
5.3.1 DStream操作概述
第5.3.2节 输入源
第5.3.2.1节 基本输入源
5.3.2.1.1 文件流
5.3.2.1.2 套接字流
5.3.2.1.3 RDD队列流
第5.3.2.2节 高级数据源
5.3.2.2.1 Apache Kafka
5.3.2.2.2 Apache Flume
5.3.3 转换操作
5.3.4 输出操作
第6章 Spark MLlib
6.1 Spark MLlib简介
6.2 机器学习工作流
6.2.1 机器学习工作流(ML Pipelines)
6.2.2 构建一个机器学习工作流
6.3 特征抽取、转化和选择
6.3.1 特征抽取:TF-IDF
6.3.2 特征抽取:Word2Vec
6.3.3 特征抽取:CountVectorizer
6.3.4 特征变换:标签和索引的转化
6.3.5 特征选取:卡方选择器
6.4 分类与回归
6.4.1 逻辑斯蒂回归分类器
6.4.2 决策树分类器
6.5 聚类算法
6.5.1 KMeans聚类算法
6.5.2 高斯混合模型(GMM)聚类算法
6.6 推荐算法
6.6.1 协同过滤算法
6.7 机器学习参数调优
6.7.1 模型选择和超参数调整