大数据学习过程中,都会学习Scala,众所周知,Spark支持4门语言,分别为R、Python、Java与Scala,但真正的底层实现语言则是Scala。在我以往的实践分享中,除了Python,我还会利用Scala去实践一遍,而且在面对大规模的数据建模中,我都会推荐去使用Hadoop、Spark去工程开发,充分利用集群的计算资源。很多在科多大数据培训的在读学员,经常对于学习方法比较提出一文,本文让大家快速了解Scala,并且学会如何学习和使用Scala

一、哪些人群适合学Scala

你必须要有清晰的职业发展规划,而不是追逐着潮流去乱学一通,要学以致用,而不是学非所用!

因此,如果你定位是成为一名 大数据开发工程师、数据应用架构师 的话,你需要去了解,更要往底层深入的学习!

如果你定位是成为一名 ETL工程师、数据挖掘工程师 的话,你需要去了解,更要往实践应用去学习!

除此之外,我并不建议你花心思去折腾它,毕竟你工作场景中也使用不到。

二、哪个段适合学Scala

我并不支持一上来就直接去学习它,因为不积跬步无以至千里,我更希望你有一定Python或者java的基础,再了解一些Hadoop/Spark的应用,才能更好,更快去上手,而不是陷入一种困惑:”我学它到底有什么用?”。

对于学习顺序,建议java-hadoop-hive-hbase-flume-kafka-storm-scala-spark

三、使用Scala有什么优势

学习它并不是让你在面试时候能够装一装,因为如果只懂皮毛,反而是弄巧成拙,那就不好了。

学习它的初衷,是因为实际工作场景中有需要,平台集群环境所决定,用合适的工具做正确的事,仅此而已。

就我目前的体验来看,它肯定比Python、R这类语言更适合大规模数据的工程开发,更符合线上挖掘业务的生产使用。它也比MapReduce、Java这类语言更简洁,更高效去开发,而且能提高计算效率。

当然,技术不局限于只固定使用一种语言,而是从业务和环境角度,灵活选择合适的语言去开发,让技术服务于业务。

四、如何能学Scala

可以选择购买一些相关书籍,或者在线上寻找学习资源,这类资源都非常多,但无经验的小伙伴,尤其是0基础,还是建议系统学习,可以自学也可以选择靠谱的培训机构

五、哪些知需要掌握?

除了参考网络的学习资料外,这里分享一些必要的基础知识介绍,便于你聚焦学习方向。

语言的背景(了解

scala是一门以java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言。

scala是纯粹的面向对象的语言。java虽然是面向对象的语言,但是它不是纯粹的,因为java的基本数据类型不是类,并且在java中还有静态成员变量和静态方法。相反,scala是纯粹面向对象的,每个值都是对象,每个操作都是方法调用。

scala也是一个成熟的函数式语言。函数式编程有两个指导思想:

a. 函数是头等值,也就是说函数也是值,并且和其他类型(如整数、字符串等)处于同一地位,函数可以被当作参数传递,也可以被当作返回值返回,还可以在函数中定义函数等等;

b. 程序的操作应该把输入值映射为输出值而不是就地修改,也就是说函数调用不应产生副作用,虽然函数式编程语言鼓励使用“无副作用”的方法,但是scala并不强制你必须这么做。

scala允许你使用指令式的编程风格,但是随着你对scala的深入了解,你可能会更倾向于一种更为函数式的编程风格。向函数式编程转变,你就应该尽量去使用val、不可变对象、无副作用方法,而不是var、可变对象、有副作用方法。要明白的是,从指令式编程向函数式编程的转变会很困难,因此你要做好充分的准备,并不断的努力。

scala运行于JVM之上,并且它可以访问任何的java类库并且与java框架进行互操作,scala也大量重用了java类型和类库。

使用IDE实现Hello Scala践)

除了Scala解释器外,我更常用IDE去开发,比如利用已部署好的环境,开发一个Demo程序。

object Demo {

def main(args: Array[String]) {

println("Hello Scala.")

}

}

其中,有几个写法的注意事项,需要你去了解的,具体如下所示:

01. 在scala中,语句之后的“;”是可选的。当有多个语句在同一行时,必须加上分号,但不建议把多个语句放在一行。

02. 建议使用2个空格作为代码缩进,常规的朋友会倾向于一个Tab键。

03. Scala的索引也是从0开始的,但是元祖从1开始。

04. 不管是Import方法,还是匹配,使用 _ 相当于Java中的 * 作用。

Scala的数据型(常用)

它有7种数值类型:Byte、Char、Short、Int、Long、Float和Double,以及2种非数值类型:Boolean和Unit(只有一个值“()”,相当于java和c++中的void,即空值)。

这些类型都是抽象的final类(不能使用new新建,也不能被继承),在scala包中定义,是对java基本数据类型的包装,因此与java基本数据类型有相同的长度。

另外,scala沿用了java.lang包中的String。在scala中,常量也称作字面量,字符串字面量由双引号包含的字符组成,同时scala提供了另一种定义字符串常量的语法——原始字符串,它以三个双引号作为开始和结束,字符串内部可以包含无论何种任意字符。

在scala中,我们使用方法,而不是强制类型转换,来做数值类型之间的转换,如99.44.toInt、97.toChar。

Scala型(常用)

它有两种变量:val和var。val如同java中的final变量,var如同java中的非final变量。

由于scala是完全面向对象的,因此val和var只是声明了对象的引用是不可变的还是可变的,并不能说明引用指向的对象的可变性。

声明变量的同时需要初始化之,否则该变量就是抽象的。如果不指定变量的类型,编译器会从初始化它的表达式中推断出其类型。

当然你也可以在必要的时候指定其类型,但注意,在scala中变量或函数的类型总是写在变量或函数的名称的后边。

val str : String = “Hello Scala.”

Scala的控制构(常用)

它与其他编程语言有一个根本性差异,也就是几乎所有构造出来的语法结构都有值,从而使得程序结构更加精简。

它内建的控制结构很少,仅有if、while、for、try、match和函数调用等而已,所以熟悉这几类就足够了。如此之少的理由是,scala从语法层面上支持函数字面量。

另外,scala中没有break和continue语句,如果有需要类似功能,可以间接性去实现,如使用Boolean的控制变量、嵌套函数等。

Scala的函数定(常用)

定义函数时,除了递归函数之外,可以省略返回值类型声明,它会根据=号后边的表达式的类型推断返回值类型,同时=号后边表达式的值就是函数的返回值,你无需使用return语句。

因为它推荐你使用表达式值代替return返回值,当然根据需要,也可以显式使用return返回值。

def getNowDate():String={

var now:Date = new Date()

var dateFormat:SimpleDateFormat = new SimpleDateFormat("yyyy-MM-dd")

var todatTime = dateFormat.format(now)

todatTime

}

以上函数的意思是为了获取当前日期,如今天2018-10-19。而对于递归函数必须指定返回值类型,如下斐波拉契数列所示:

def fac(n: Int) : Int = if(n <= 0 ) 1 else n * fac(n-1)

最后,如果没有函数值返回,则默认返回值是Unit。

Scala的异常理(常用)

它与java的类似,但也有区别,如它不需要提前声明函数、方法可能会抛出的某种异常。而且throw、try-catch-finally表达式都是有值的,当没抛异常时,try处为表达式的值;当抛异常被捕获时,catch处为表达式的值;当抛异常没被捕获时,就没有返回值;finally处计算得到表达式值,不过它常用于处理 关闭文件、连接 等。

也就是说,如果你想快速入门Scala这么语言,能够去实践开发一些小模型,数据处理逻辑,等等。那上面这7点知识,基本囊括了你短期学习的方向,而更深入的知识点,可以在后期查缺补漏,结合实际场景去调研,去学习,去使用。

更多学习资料,可以给我留言

六、学好Scala的核心关

这也是学习任何一门语言,甚至是手艺的通用方法,这里很简化去概括,更多细节需要慢慢去体会。

第一点:必要的基础打扎实;

第二点:多寻找开发场景去实践,目的是为了练手、遇到新问题、锻炼解决问题的能力;

第三点:遇到开发困难,先理清瓶颈在哪里?再多搜索网络资料针对性去解决;

第四点:完整去开发一个全流程的数据项目,甚至是业务场景模型,把零散知识贯穿起来;

道理可能大家都懂,但是方法一定要选择正确,才能事半功倍。

大数据学习,Scala快速学习的方法相关推荐

  1. 大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

    大数据技术之_20_Elasticsearch学习_01 一 概述 1.1 什么是搜索? 1.2 如果用数据库做搜索会怎么样? 1.3 什么是全文检索和 Lucene? 1.4 什么是 Elastic ...

  2. 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作

    大数据技术之_16_Scala学习_13 第十九章 Scala语言的数据结构和算法 19.1 数据结构(算法)的介绍 19.2 看几个实际编程中遇到的问题 19.2.1 一个五子棋程序 19.2.2 ...

  3. 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例

    大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...

  4. 大数据薪资一再飙升 学习大数据需要哪些基础?

    2018年6月19日,备受关注的个人所得税法修正案草案迎来第七次大修,个税起征点由每月3500元提高至每月5000元(每年6万元).对于大多数人来说这绝对是个好消息,但人们更愿意参加培训班实现高薪.近 ...

  5. 从小白到大数据人工智能专家的学习历程-送100G学习资料

    最近有很多人问我,大数据是怎么学?需要学什么技术以及这些技术的学习顺序是什么?今天有时间我把个问题总结成文章分享给大家. 大数据处理技术怎么学习呢?首先我们要学习Python语言和Linux操作系统, ...

  6. 什么是大数据?零基础如何学习大数据?(附学习路线)

    其实简单的来说,大数据就是通过分析和挖掘全量的非抽样的数据辅助决策. 大数据可以实现的应用可以概括为两个方向,一个是精准化定制,第二个是预测.比如像通过搜索引擎搜索同样的内容,每个人的结果却是大不相同 ...

  7. 如果通过Java来完成大数据开发,需要学习哪些内容

    首先,当前大数据领域的开发岗位确实比较多,近两年有不少大数据方向的研究生也会从事大数据开发岗位,而Java语言则是大数据开发人员的常用工具,所以如果要从事大数据开发岗位,可以重点学习一下Java语言. ...

  8. 成为一个大数据开发工程师的学习步骤--文字版

    本博客搬运自我知乎所出视频成为一个大数据开发工程师的学习步骤? - 知乎大数据的学习是有条件限制的,首先你需要是一名普通的工程师,如果你是Java工程师的话更好,但如果你是小-https://www. ...

  9. 大数据技术之_11_HBase学习_03_HBase 实战之谷粒微博(练习API) + 扩展知识(布隆过滤器+HBase2.0 新特性)

    大数据技术之_11_HBase学习_03 第8章 HBase 实战之谷粒微博 8.1 需求分析 8.2 代码实现 第9章 扩展知识 9.1 HBase 在商业项目中的能力 9.2 布隆过滤器 9.3 ...

  10. 大数据技术之_16_Scala学习_12_设计模式+泛型、上下界、视图界定、上下文界定、协变逆变不变

    大数据技术之_16_Scala学习_12 第十七章 设计模式 17.1 学习设计模式的必要性 17.2 掌握设计模式的层次 17.3 设计模式的介绍 17.4 设计模式的类型 17.5 简单工厂模式( ...

最新文章

  1. java poi3.15 ppt,Apache POI PPT - 演示( Presentation)
  2. python 任务计划_windows 10 设定计划任务自动执行 python 脚本的方法
  3. jsp页面根据json数据动态生成table
  4. 【传智播客】Javaweb程序设计任务教程 黑马程序员 课后答案【合集】
  5. 新疆微软.NET技术俱乐部7月活动图文报道
  6. 程序员最应该读的图书
  7. linux 设置防火墙ip网段,网络防御-防火墙设置IP网段规则
  8. 3GP格式转换为AMV格式
  9. Yapi 配置 pm2服务
  10. Lintcode A+B问题
  11. 如何快速填充表格公式
  12. opencv需要安装mysql吗_OpenCV2.4.3的新特征以及安装方法
  13. 聚类生成anchor框的尺寸和比例
  14. linux shm open,undefined reference to \'shm_open\'解决办法-j_cle-ChinaUnix博客
  15. 程序员 业余赚钱的六种途径
  16. SOCKET与 线程 完成聊天室 非阻塞
  17. RAD Studio 10 自带Demo代码汇总说明
  18. 达摩院细粒度分类SoftTriple Loss ICCV高引论文深入解读
  19. ChatGPT 推出 iOS 应用,支持语音输入,使用体验如何?
  20. 网络2--搭建实验拓补图

热门文章

  1. STL map的几种赋值方式
  2. 电视hdr测试软件,4K电视HDR尽量选择yuv,效果最好,有效解决HDR下画面发白!
  3. 超便捷mail163手机邮箱登录方法
  4. 腾讯月薪1.5W扩招毕业生,看到要求我傻眼了!
  5. 实时的YcoCg-DXT压缩
  6. DXT-126A环保助焊剂可焊接变压器与线束
  7. H5游戏调试技巧归类总结
  8. B站左程云算法视频笔记05
  9. 小米12x参数配置详细
  10. 解决 This request has been blocked; this endpoint must be available over WSS.