pig2 发表于 2016-11-20 11:19:53

spark开发基础之从Scala快餐序言


序言:

spark是用Scala语言来写的,因此学习Scala成为spark的基础。当然如果使用其它语言也是可以的。从性能上来讲,及代码简洁等方面,Scala是比较好的一个选择。
当前我们的生活都是处于快节奏,各方面都讲究快,快--讲究的是效率,这里同样是想让大家快速入门Scala,如同吃快餐一样,因此命名为快餐Scala。文中如有不当之处,大家多批评指正。
Scala是函数式编程,继承了其它语言的很多特点,并且发展了自己特性。因此下面所涉及的内容,需要熟悉一门语言,特别是Java语言。如果没有语言基础,建议从下面资源推荐中,下载Scala编程(完整版) (密码uprb),如果想更多更系统的学习,也可以从推荐资源中选择适合自己的书籍或则资源。既然我们学习Scala,那就需明白什么是函数式编程。
在Scala编程中认为:函数式编程有两种指导理念:第一种理念:函数式头等值。也就是函数式有值的,并且其可以作为参数来传递。匿名函数,可以随意的插入代码中。这个与传统的语言中的函数是不同的,传统语言函数可以理解为一个操作,或则功能。作为参数传递,会让传统程序员难以理解。但是在Scala中是可以的。
第二种理念:
程序的操作应该把输入值映射为输出值而不是修改原先数据。比如我们操作一个字符串,当我们执行replace操作后,形成的是一个新的字符串。而不是在原先的字符串的基础上修改而成。这有点绕的。打个比方,你们家房子旧了,你想翻新。不是对旧房子改造,而是另外新盖一个房子。
第二种理念另外的解释:方法不应有任何副作用。方法与环境的唯一交流方式是获取参数和返回结果。同样也是以字符串为例,Java的String, replace操作后,会返回一个新的字符串,这就是返回的结果。这里面参数是字符串本身,以及替换和被替换的字符。
上面有点官方,可能我们还是不理解什么是函数式编程。
这里我们复习下初中的函数,y=f(x);x数输入值,y是输出值,y也是x的函数,x是自变量,y都有对应的值。那么我们在来看上面字符串替换。
String str="www.aboutyun.com";System.out.println(str.replace(".", "|"));上面输入值:(1)字符串:"www.aboutyun.com(2)点号:"."(3)竖杠:"|"
输出值:www|aboutyun|com
上面这样就与我们的函数对应起来:x是(1)字符串:"www.aboutyun.com(2)点号:"."(3)竖杠:"|"
y是www|aboutyun|com我们理解上面内容后,在来套用第一、第二理念或许就能更好理解了。
我们理解了Scala为什么是函数式编程后,下面内容总结了Scala中个人认为比较难以理解的字符及一些关键字和函数。希望对大家有所帮助。
下面总结一些Scala常识性与其它语言不一样的地方

Scala没有静态函数,是通过object实现的。
Scala最后一行为返回值。
如果没有返回值则是unit
语句终止可以不使用分号
没有参数的方法直接写方法名,无需带括号
循环表达式没有(continue与break)
边长参数(:_*)

下两篇:
spark开发基础之从Scala符号入门Scalahttp://www.aboutyun.com/forum.php?mod=viewthread&tid=20159
spark开发基础之从关键字入门Scala
http://www.aboutyun.com/forum.php?mod=viewthread&tid=20223

页: [1]
查看完整版本: spark开发基础之从Scala快餐序言