Scala大数据工程师入门提纲

更新于 2023-12-24 22:41

Linux 基础

目标和要求

  • 能够熟练使用 Linux 或者 Mac OS 完成开发和日常工作使用
  • 熟练使用稍后列出的常见 Unix 基本工具集
  • 可以从容穿梭于远程服务器之间,进行基本的系统管理和应用部署维护
  • 熟练掌握 GNU Readline 命令行技巧
  • 耗时: 16~32h

教材

  1. The Linux Command Line

安装 Linux 系统

可以自由选择以下 Linux 发行版

  1. Deepin Linux: https://www.deepin.org/ (如果你对 Linux 一无所知)
  2. Ubuntu (not Ubuntu Kylin): https://www.ubuntu.com/desktop or http://cn.ubuntu.com/
  3. Debian: http://www.debian.org/
  4. Fedora: https://getfedora.org/
  5. Gentoo: http://gentoo.org/ (慎重,除非你非常清楚自己需要什么)
  6. Arch: https://www.archlinux.org/ (慎重,除非你非常清楚自己需要什么)

安装使用 zsh + oh-my-zsh

常见 Unix 工具集

  • 相对路径与绝对路径
  • echo
  • ls
  • mkdir
  • mv
  • cp
  • rm
  • df
  • du
  • cat
  • for…do…done
  • top / htop
  • cd
  • man
  • less
  • head
  • tail
  • time
  • date
  • ping
  • wc
  • curl
  • wget
  • 文件描述符
  • 流、管道和重定向
  • nohup
  • chmod
  • chown
  • sudo / su
  • password
  • grep
  • sort
  • uniq
  • tar / unzip / gunzip
  • ssh
  • rsync
  • scp
  • awk
  • sed

Readline 入门

常见 Linux 包管理系统

掌握开发所用系统对应的一种,其余按需学习。

Systemd

最简单的 shell script 写法

以下任选一:

OpenSSH

  • 建议读 SSH安全性和配置入门
  • 最低要求:掌握以下常见用法或配置要点
    • ssh-keygen
    • ssh-copy-id
    • ~/.ssh/config
    • sshd

Git

耗时: 2~4h

以胜任日常开发协作为准。以下材料可任选一种:

文本编辑器基础

耗时: 1~3h

以下任选一种:

  • Emacs
  • Vim
  • Gedit

Sbt 简单使用

耗时: 1~2h

  • 安装: http://www.scala-sbt.org/download.html

  • 入门指南: http://www.scala-sbt.org/0.13/docs/index.html

  • 修改镜像配置

    ~ $ cat ~/.sbt/repositories
    [repositories]
    local
    repox-maven: http://repox.gtan.com:8078/
    repox-ivy: http://repox.gtan.com:8078/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]
    aliyun: http://maven.aliyun.com/nexus/content/groups/public/

Intellij Idea + Scala Plungin 简单使用

耗时: 2~4h(有些库和依赖安装会非常慢,需要注意配置镜像)

Scala 基础

  1. Scala School!, Twitter 出品的 Scala 快速入门,有中文版: https://twitter.github.io/scala_school/
  2. A Tour of Scala, Scala 官方出品的入门指南: http://docs.scala-lang.org/tutorials/
  3. Effective Scala, Twitter 的 Scala 最佳实践: http://twitter.github.io/effectivescala/
  4. (书) Scala实用指南https://item.jd.com/12383836.html
  5. (书) 快学 Scala: https://item.jd.com/11113845.html
  6. (书) Scala函数式编程: http://item.jd.com/11905178.html
  7. Scala 标准库 API: http://www.scala-lang.org/api/current/

Scala 进阶

目标: 写出结构清晰,抽象合理,健壮而优雅的 Scala 代码。

  1. Scala 标准库中以下数据类型的常见用法(仅考虑不可变集合,可变集合按需学习):

    • List
    • Seq
    • Map
    • Set
    • Option
    • Either

    尤其掌握以下几种与函数式编程范式关系密切的用法:

    • map
    • flatMap
    • filter / filterNot
    • flatten
    • fold / foldLeft
    • reduce / reduceLeft / reduceLeftOption
    • collect
    • count
    • distinct
    • drop
    • take
    • groupBy
    • isEmpty / nonEmpty
    • head / headOption / tail / init
    • max / maxBy / min / minBy
    • sum
    • zip / zipAll / zipWithIndex
  2. Scala 标准库练习

    Projcect Euler 上的 1~20 题,对于掌握 Scala 标准库而言是个非常好的练习对象。而编号 20 以后的题目,其数学(尤其是数论)的成分显著增大,难度也随之上升,不适合作为本阶段的练习项目。

  3. 理解 Scala 标准库庞大数据类型的层级结构,了解如何选取合理的数据结构和类型。

  4. Scala Future 和 Promise

  5. Scala Implicit Pattern

  6. Scala Type Class

  7. Functor, Applicative and Monad (有助于加深对 Type Class 的理解,可选)

Scala 常用库

目标: 能够自由地使用 Scala 和 Java 生态圈的工具和组件,写出结构清晰,抽象合理,健壮而坚固的项目。

Scala 项目构建与测试

目标: 构建稳定可靠的,便于交付和监控的代码。

大数据生态系统常用组件

目标:

  • 对于实际项目中用到的组件,理解其设计要点,熟悉其特性和性能优劣,熟练部署运维和使用。
  • 对于实际项目中尚未使用的组件,理解其设计要点,熟悉其特性和性能优劣。

列举如下:

JVM 性能调优基础

OLAP 基础理论

分布式系统基础理论