大数据入门:Scala函数式编程

在大数据的学习当中,学到Spark部分,就免不了需要Scala这门语言了,Scala是Spark框架的原生编程语言,想要真正把Spark搞懂,那么对Scala自然也需要相应程度的掌握。今天的大数据入门分享,我们就来讲讲Scala函数式编程。

提到Scala,首先会提到的一个概念,就是函数式编程,这也是Scala语言区别与其他编程语言的典型特征。Scala是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。

在大数据处理场景下,Scala语言有着相当的优势——

在实际运行中,Scala源代码被编译为Java字节码,所以可以运行在JVM上,可以调用现有的Java类库,并兼容现有的Java程序。

命令式编程VS函数式编程

命令式编程,程序逻辑的基本元素是:变量+操作符+控制结构,这些元素构成一条条的代码指令,因此,称之为命令式编程。

函数式编程,程序逻辑由:map+匿名函数组成。整个代码中,看不到变量、控制结构、操作符等元素,看到的只有函数,因此,函数式编程的本质就是:程序逻辑的基本元素是函数。

理解函数式编程

命令式编程中,程序逻辑的基本元素是:变量+操作符+控制结构;

函数式编程中,程序逻辑的基本元素是:函数;

面向对象编程中,程序逻辑的基本元素是:对象+操作符+控制结构;

大部分的程序逻辑,命令式编程和函数式编程都可以实现;

命令式编程的思路更加偏向于计算机本身,而函数式编程的思路更偏向于人的思维;

Scala提供了大量的特性,例如:val常量,匿名函数、高阶函数、闭包、柯里化等,来支持函数编程;

函数式编程有利于程序自动并行化,只需对numList做一个简单的数据划分,将numList划分成n个部分,每个部分都执行map()操作,最后汇总结果即可,这个工作是一个固定的模式,可以由机器来完成;

编程时,要注意培养自己使用函数式编程的习惯,尝试将逻辑抽象成函数,将函数作为程序逻辑的组成元素,同时,还可以多阅读别人的代码,如Spark的实现,吸取其中有益的经验,久而久之,就可以写出很专业的的函数式编程代码。

编程方式的选择

Scala支持命令式编程、函数式编程、面向对象编程。

那么在实际编程中该如何选择呢?

在实践中,编程方式的选择,要以功能实现为第一要义。

例如,面向对象支持多态、继承,这些特性对于代码复用、简化逻辑有很大帮助,因此,有类似需求的时候,可以考虑面向对象编程;又比如,函数式编程对程序并行化非常友好,因此,有类似需求的时候,可以考虑函数式编程等等,此外,如类似数学推理的需求,用函数式编程也是比较合适的。

切记:不可因为偏爱某种编程方式,而生搬硬套,为了编程而编程,忘记出发点,是不可取的。

关于大数据入门,Scala函数式编程,以上就为大家做了简单的介绍了。Spark框架在大数据技术生态当中,占据着相当重要的地位,而涉及到Spark学习,也必然离不开Scala函数式编程的学习与掌握。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、Scala核心编程课程简介近年来随着大数据的兴起,大数据核心框架Spark和Kafka也受到到广泛关注, Spark底层是Scala实现的, 因此也带火了Scala语言,目前Scala被全球知名公司(如:谷歌、百度、阿里、Twitter、京东等)广泛用于Spark开发。新一代的物联网时代到来,会对大数据应用人才的需求越加紧迫。 尚硅谷网罗和整合了学员很喜爱的师资,打造出专注于Spark开发的Scala课程,我们讲解Scala核心编程技术,同时也讲解编程思想、设计模式和Scala底层实现,让您有豁然开朗的感受。二、课程内容和目标本课程重点讲解Scala核心编程,内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数推断、控制抽象、Trait、面向对象编程、异常处理、惰性函数、Akka及Actor模型、Spark Master和Worker通讯、隐式转换、隐式参数、工厂模式、单例模式、观察者模式、装饰者模式、代理模式、泛型、上下界、视图界定、上下文界定、协变逆变不变和源码剖析。通过系统全面的学习,学员能掌握Scala编程思想和Scala底层机制,为进一步学习Spark打下坚实基础。三、谁适合学1.希望以较低的投入和风险,来了解自己是否适合转型从事Spark开发的求职人员。2.有一定的Java基础,或者自学过一些Java书籍与视频资料,想系统掌握Scala语言的程序员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值