大数据学习,Scala快速学习的方法

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

一、哪些人群适合学Scala

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

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

如果你定位是成一名 ETL工程、数据挖掘工程 ,你需要去了解,更要往用去学

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

二、哪个段适合学Scala

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

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

三、使用Scala有什么优势

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

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

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

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

四、如何能学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种数值类型:ByteCharShortIntLongFloatDouble,以及2种非数值类型:BooleanUnit(只有一个“()”,相当于javac++中的void,即空)。

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

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

scala中,我使用方法,而不是转换,来做数值类型之转换,如99.44.toInt97.toChar

Scala型(常用)

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

由于scala是完全面向象的,因此valvar只是声明了象的引用是不可是可的,并不能明引用指向的象的可性。

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

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

val str : String = “Hello Scala.”

Scala的控制构(常用)

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

它内建的控制构很少,ifwhilefortrymatch和函数用等而已,所以熟悉就足了。如此之少的理由是,scala面上支持函数字面量。

另外,scala中没有breakcontinue语句,如果有需要类似功能,可以间接性去实现,如使用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似,但也有区,如它不需要提前声明函数、方法可能会抛出的某种异常。而且throwtry-catch-finally表达式都是有的,当没抛异常try处为表达式的值;当抛异常被捕获时,catch处为表达式的值;当抛异常没被捕获时,就没有返回值;finally处计算得到表达式值,不过它常用于处理 文件、 等。

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

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

六、学好Scala的核心关

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

第一点:必要的基打扎

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

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

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

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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值