前言
Spark 作为目前最火的技术栈或许 大概 应该 maybe 没有之一了吧,看上去很厉害,实际上也很厉害。。。去年,有个东西还准备自己造轮子解决,后来耽搁了,上周一搜,已经有大神造好了轮子
本篇,作为自己学习Spark 的一个记录,不涉及Spark 的具体介绍,主要是一些学习思路和学习资料的整理,资源都来自网络及社区,侵删。
前置条件
编程语言
学习使用Spark,需要有一定的基础知识,在编程语言的方面,目前支持了Scala、Java、Python、R。个人建议是Scala 或 Java。
Scala
Scala 作为Spark 的开发语言,简洁、优雅、语法丰富、支持lamba表达式,能够明显的提高开发效率,唯一的问题就是代码的可读性稍差刚开始用Scala 写Spark 的时候,都用笔在纸上写出各个RDD之间的转化。此外,会java的程序员一抓一大把,会Scala的略少,可能有一个学习的过程。快学Scala
很不错的书恩,买了到现在还跟新的一样
PDF 下载链接 密码:l9ef,请支持正版为Java程序员编写的Scala的入门教程
非常实用的教程1个小时从入门到精通
该教程仅在对语言和其编译器进行简要介绍。目的读者是那些已经具有一定编程经验,而想尝试一下Scala语言的人们。要阅读该教程,应当具有基础的面向对象编程的概念,尤其是Java语言的。
传送门Scala语言规范
Scala语言定义和一些核心库模块的参考手册,可以当工具书查。
传送门
Java
这个没啥好说的
真是初学者的话,网上随便搜个教程,装好JDK和IDE,先写个hello world,再了解下面向对象的知识,然后看看多线程,差不多可以边看API边用着了。剩下就是左手Google 右手Stack Overflow了。
参考书的话,推荐Java 核心技术 和 Thinking In Java这么经典的书,你不买套正版的,好意思说自己是程序员么Python
胶水型语言,即用即贴。各种神奇的库,机器学习、数据分析方便的一比。工业用就差那么点了。廖雪峰的python教程
廖雪峰老师的这个教程作为入门足够了。剩下的,看着Spark 的官方API,自己搜吧。R
如果你本身就是搞数据分析出身,用R习惯了,那也不用学什么了。
如果你本身不会R,上面三个还不够你学么!!!
算法知识
- 图论
如果要使用Graph X 的话,需要一些图论 和 图计算的基本知识。
图论及其应用
SQL
使用Spark SQL 的话,你需要一些SQL 的基本知识。
入门教程
Spark 的教程方法很多,最实用的是去官网,看Quick Start。
其他的,网上也有很多,整理了几个个人觉得很棒的教程。
Spark 入门实战
Spark 入门实战系列 这套教程从Spark 的生态圈介绍开始,涉及了基础的开发环境搭建,基本概念的介绍,以及Spark 组件的使用。理论结合实践,demo 代码(基于Scala)一应俱全。可谓入门的不二之选。Spark快速大数据分析
Spark快速大数据分析,这本书200页左右,介绍了Spark RDD 的基本操作,以及其余模块的基本使用,非常适合初学者。IDE推荐
首选是IDEA
次选是Eclipse当然,你可以用vim,没人拦着你
此外还有一个方式,在已经搭建好Spark 环境的集群上,直接进入Spark shell,都不用编译工程,可谓方便快捷,在实验一些逻辑的时候,能提高不少效率
还有Spark 的Master 设置为local 的时候,可以直接运行IDE看到结果,无需打包上传至服务器,使用spark-submit 的方式提交。验证代码逻辑可用。
进阶教程
Spark 高级大数据分析
Spark 高级大数据分析介绍了如何利用Spark进行大规模数据分析的若干模式,通过实例向讲述了怎样解决分析型问题。Apache Spark 源码剖析
Apache Spark 源码剖析 以Spark 1.02版本源码为切入点,着力于探寻Spark所要解决的主要问题及其解决办法,通过一系列精心设计的小实验来分析每一步背后的处理逻辑。
Spark 源码走读
该系列 从Spark Job 的提交开始,进行Spark的源码走读。恩 他就是上面那本书的作者Spark SQL 源码分析
盛利大神 源码阅读的笔记Spark Streaming 源码解析系列
来自 腾讯 广点通 技术团队出品的源码解析Spark MLlib 源码阅读
这个 按照MLlib 中的次序,进行介绍。RDD paper
Spark 诞生地 UCB 的论文Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing 系统的阐述了RDD的设计初衷和基本架构,对深入理解Spark 有很大的帮助。
这是一篇中文翻译
API
在开发的过程中,没有什么比官方文档更好的老师了。自己在官网找对应版本的API即可。源码
在github 上有Spark 的源码,个人感觉目前用的比较多的是1.6.3 和 2.1.0 两个版本。Spark 1.6 和 2.x 设计上确有一些地方有了改动,但是总体的实现思路,还是类似的,看源码的话,根据自己当下使用的版本,开始看吧。一些设计理念可以借助上文的源码走读加深理解。
一些站点
过往记忆-Spark专栏
依稀记得,当时年少,懵懂无知,网还被墙,一遇问题,只能度娘,结果搜到的解决方法,大多来自过往记忆
邵塞塞
早期Spark contributor之一Matei Zaharia
UCB 的大神