0%
1.6k 字 5 分钟

Spark学习笔记汇总

前言

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语言定义和一些核心库模块的参考手册,可以当工具书查。
    传送门

    菜鸟教程
    http://www.runoob.com/scala/scala-tutorial.html

  • Java
    这个没啥好说的
    真是初学者的话,网上随便搜个教程,装好JDK和IDE,先写个hello world,再了解下面向对象的知识,然后看看多线程,差不多可以边看API边用着了。剩下就是左手Google 右手Stack Overflow了。
    参考书的话,推荐Java 核心技术Thinking In Java 这么经典的书,你不买套正版的,好意思说自己是程序员么

  • Python
    胶水型语言,即用即贴。各种神奇的库,机器学习、数据分析方便的一比。工业用就差那么点了。

    廖雪峰的python教程
    廖雪峰老师的这个教程作为入门足够了。剩下的,看着Spark 的官方API,自己搜吧。

  • R
    如果你本身就是搞数据分析出身,用R习惯了,那也不用学什么了。
    如果你本身不会R,上面三个还不够你学么!!!

算法知识

  • 机器学习
    如果你要使用 Spark MLlib 的话,你需要一定的机器学习基础,至少得知道你用的算法是什么吧。
    周志华老师的机器学习
    斯坦福大学公开课 机器学习课程
    Mitchell 的机器学习
  • 图论
    如果要使用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所要解决的主要问题及其解决办法,通过一系列精心设计的小实验来分析每一步背后的处理逻辑。

  • API
    在开发的过程中,没有什么比官方文档更好的老师了。自己在官网找对应版本的API即可。

  • 源码
    在github 上有Spark 的源码,个人感觉目前用的比较多的是1.6.3 和 2.1.0 两个版本。Spark 1.6 和 2.x 设计上确有一些地方有了改动,但是总体的实现思路,还是类似的,看源码的话,根据自己当下使用的版本,开始看吧。一些设计理念可以借助上文的源码走读加深理解。

一些站点

  • CSDN 专栏

  • 过往记忆-Spark专栏
    依稀记得,当时年少,懵懂无知,网还被墙,一遇问题,只能度娘,结果搜到的解决方法,大多来自过往记忆