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

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_41852491/article/details/83180391

大数据学习过程中,都会学习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的核心关

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

第一点:必要的基打扎

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

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

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

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

展开阅读全文

快速学习方法

07-05

以前老是听别人说,十多年读书或者说大学你没学到快速学习的方法,你就白读了,但是事实上绝大多数的人大学都是一路LOL,DNF 各种游戏各种娱乐过来的,直到后面找工作正式踏入职场才追悔莫及。rn 前面段时间也是在csdn逛论坛的时候,发现C#有个版主级别的牛人,尝试在南京地区(不是蛮记得了)教有点基础的新人快速掌握熟练C#,分享自己学习道路上的心得, 当时我是蛮羡慕的,只可惜不是java的,虽然蛮多人都说学习主要靠自己,但是个人觉得只有站在巨人的肩膀上才可以快速看的更高更远,有位前辈指导绝对可以加快你成长的速度,对于快速学习小弟在这里也只是抛砖引玉。rn 由于已经工作过了,所以对于学习一般也只是学习工作当中遇到的问题,还有晚上偶尔逛逛论坛,因为 如果在工作的时候看书 ,这种做法是不职业,不可取的,只有碰到问题 去寻找解决方案的时候学习东西,所以当遇到问题的时候,首先应该怎么考虑。其实真正的修复问题不难,主要的是定位问题本身的起因,这就需要去梳理代码。当去梳理代码的时候遇到自己写的代码还好,基本上都知道,但是如果是别人的代码,那么又该从何开始,尤其是那些基本上没有什么注释的代码又该何去何从,rn 还有解决问题是针对修复问题本身去修改,还是以学习的目的去研究问题,可是如果去研究问题,导致进度跟不上,又该如何,还有每次js接触别人插件的时候,每次写功能代码的时候该如何考虑,才能尽可能的做好。下面请各位大神发言,小弟的砖头已经抛出,希望能引出java 或者其他大神的玉,语言本是相通的,无国界,无内因外因,同时也希望java 方面有大神也能举办下像先前csdn上那位C#大神做过的事,希望能在双休的时候 在 江苏 上海 浙江 地区 也来一场学术解说,定当踊跃报名。(本人web方向开发者,现在做电子商务系统。) 论坛

没有更多推荐了,返回首页