终于,为了大数据分析我还是开启了Scala学习之路

简介: 要问当下最热门的IT技术,大数据可占一席之地;要问当下最网红的IT岗位,数据分析师也必将榜上有名。二者结合,自然就是大数据分析师。所谓大数据分析,个人理解就是在传统数据分析思维和技能的基础上,加持大数据工具,而Spark作为一个优秀的分布式计算框架,自然可作为大数据分析的必备技能。进一步地,虽然Spark提供了4种主流语言,但Scala作为Spark的原生开发语言,仍不失为应用Spark开发的首选。基于以上考虑,我终于还是入坑了Scala的学习之旅——尽管Scala实际上属于一门小众语言,小众到似乎除了Spark甚至没什么用武之地

640.png

本文作为Scala系列开篇之作,主要分享3个问题:

  • Scala是一门什么样的语言?
  • Scala具有哪些特点?
  • Scala开发环境如何搭建?


01 Scala是一门什么样的语言


要回答这个问题,核心关键词有两个:面向对象函数式编程。引用官网的原文就是:


Scala combines object-oriented and functional programming in one concise, high-level language.


其中:

面向对象应该是当前绝大多数主流编程语言的通用范式,重点是支持类和对象的概念——其中类是抽象的,定义了一组变量和方法和集合体,由类生产出的就是对象,这个过程也叫实例化,所以理解类和对象二者的关系就相当于:类是生产线,生产出的产品叫对象。而支持这种类和对象的编程语言,则称作面向对象。一般而言,与面向对象相对应的词叫作面向过程,或者说不支持封装类和对象、一般需要完整定义整个执行过程的方式来完成模块化的编程语言。典型的例子就是C语言是面向过程的,而C++则是面向对象。


函数式编程也不是Scala首创或独有特性,例如Python中其实就能寻见函数式的踪影,据说Java8以后版本也逐渐支持这一理念。那么何为函数式编程呢,通俗地讲,就是可将函数以普通变量的身份作为其他方法的入参或返回值,用Scala官方描述词汇叫Functions are first-class objects. ,即函数是一等公民!


进一步地,由于Scala支持这两种编程理念,故而叫做多范式编程语言。那么哪种理念更为先进或者说重要的,其实这本身是个伪命题——因为本无孰优孰劣之别。但就个人理解而言,函数式编程特性显然对于成就Scala作为Spark的首选语言更为重要,或许这会是在了解Scala和Spark的诸多相似算子之后的感悟。


640.jpg


02 Scala具有哪些特点


Scala除了是一门支持多范式的编程语言,还具有哪些特点呢?之于这一问题,我想原原本本的引用官方的概括就好,毕竟这是最为权威也是足够的:


640.png


逐一而论:

  • 与Java一脉相承。实际上,Scala是基于Java基础之上的一门语言,创立之初的动机在于对Java的一些特性不满,想改进并成为Java替代首选。实际上,Scala不仅完成了对Java特性的精进,也可以直接引用和继承Java的类库。相当于说,Java有的Scala也可以有,反之Scala比Java更简洁。


640.jpg

                      Scala创始人Martin Odersky


  • 类型推断机制。实际上,Scala中精简Java语法的一个重要举措就是支持类型推断,所以在声明变量时可无需指定变量类型,而交由解释器根据变量取值自动推断。(这与Python中的缺省变量类型的理念还不一致)

  • 并行化和分布式。即支持数据的并行和分布式计算,得益于actor通信机制,未来将进一步支持异步编程。这与Spark的分布式计算理念真是一致。


  • 特质(Trait)。一贯类比的是Java接口,实际上就是可以在特质中先声明变量和方法,但不指定具体操作,而等待后继者再完成具体定义。实际上是为了方便于类的继承。

  • 模式匹配。类似于多数编程语言中的switch…case…,个人对此尚未发现独特优势


  • 高阶函数。所谓高阶函数,就是支持将函数当做普通变量一样作为其他函数/方法的入参或返回值,这也是函数式编程的具体体现。


03 Scala开发环境如何搭建


工欲善其事,必先利其器。在了解了Scala语言的几个宏观特性之后,那么则需考虑搭建一个Scala编程环境,以期后续编程实战。


前文提到,Scala实际上是一个基于Java基础之上的编程语言,更准确地说类似于Java运行于JVM(Java Virtual Machine, Java虚拟机),Scala其实也是运行在JVM上的(不然怎么实现与Java无缝继承呢),所以搭建Scala环境首先需要安装Java环境,而后再安装Scala语言环境即可。具体而言:


  • 安装JDK8。纵然当前Java版本已更新到15版本,但JDK8仍然是稳定和经典的首选。实际上,Scala当前最新版是2.13,而不同Scala版本与JDK版本间的支持关系如下:


640.png

JDK8仍然是经典之选


  • 安装Scala。Scala目前最新大版本是2.13,考虑后续与Spark的兼容性和稳定性等问题,实际安装2.11或2.12更为合适。访问Scala官网(https://www.scala-lang.org/),根据系统类型选择合适版本即可

正常情况下,安装完Scala安装程序后,会自动将Scala加入到系统环境变量中,打开cmd,键入scala,稍等片刻即可看到进入到scala的原生shell环境,个人认为这是学习初期最好的尝试语法的IDE。


640.png


当然,更为专业的Scala IDE是Idea,其与Pycharm同为捷克软件公司JetBrains出品,支持多种编程语言,包括Java和Scala。与Pycharm区分专业版(付费)和社区版(开源)类似,Idea也区分付费和开源的两个版本,即旗舰版和社区版,一般而言社区版虽然功能受限但对普通开发者而言是足够的。安装过程也较为常规,前往JetBrains Idea官网(https://www.jetbrains.com/idea/)选择Idea  Community下载即可。下载后,还需完成3步配置与安装,即:


  • 安装scala插件:settings->plugins,搜索scala安装即可,安装完成后一般需要restart


640.png


  • 配置JDK8路径:File->Project Structure->SDKs,点击+按钮选择add JDK即可


640.png


  • 配置Scala SDK路径:File->Project Structure->Global Libraries,点击+按钮选择Scala SDK即可。


640.png


最后,随手就是一个hello, world!


640.png


640.png

目录
相关文章
|
18天前
|
存储 消息中间件 监控
【Flume】Flume在大数据分析领域的应用
【4月更文挑战第4天】【Flume】Flume在大数据分析领域的应用
|
1月前
|
Cloud Native 数据处理 云计算
探索云原生技术在大数据分析中的应用
随着云计算技术的不断发展,云原生架构作为一种全新的软件开发和部署模式,正逐渐引起企业的广泛关注。本文将探讨云原生技术在大数据分析领域的应用,介绍其优势与挑战,并探讨如何利用云原生技术提升大数据分析的效率和可靠性。
|
1月前
|
存储 消息中间件 大数据
Go语言在大数据处理中的实际应用与案例分析
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理中的实际应用,通过案例分析展示了Go语言在处理大数据时的优势和实践效果。文章首先介绍了大数据处理的挑战与需求,然后详细分析了Go语言在大数据处理中的适用性和核心技术,最后通过具体案例展示了Go语言在大数据处理中的实际应用。
|
1月前
|
数据采集 运维 数据挖掘
API电商接口大数据分析与数据挖掘 (商品详情店铺)
API接口、数据分析以及数据挖掘在商品详情和店铺相关的应用中,各自扮演着重要的角色。以下是关于它们各自的功能以及如何在商品详情和店铺分析中协同工作的简要说明。
|
3月前
|
关系型数据库 MySQL Serverless
高顿教育:大数据抽数分析业务引入polardb mysql serverless
高顿教育通过使用polardb serverless形态进行数据汇总,然后统一进行数据同步到数仓,业务有明显高低峰期,灵活的弹性伸缩能力,大大降低了客户使用成本。
|
3月前
|
机器学习/深度学习 数据采集 算法
大数据分析技术与方法探究
在当今信息化时代,数据量的增长速度远快于人类的处理能力。因此,如何高效地利用大数据,成为了企业和机构关注的焦点。本文将从大数据分析的技术和方法两个方面进行探究,为各行业提供更好的数据应用方向。
|
2月前
|
API
GEE案例分析——利用sentinel-3数据计算空气污染指数(Air Pollution Index,简称API)
GEE案例分析——利用sentinel-3数据计算空气污染指数(Air Pollution Index,简称API)
105 0
|
3月前
|
数据挖掘
离线大数据分析的应用
离线大数据分析的应用
|
3月前
|
机器学习/深度学习 存储 人工智能
大数据处理与分析技术:未来的基石
在信息化时代,数据已成为企业发展和决策的基础。而随着数据量的不断增长,传统的数据处理方法已经无法满足现代企业的需求。因此,大数据处理与分析技术的出现成为了新时代的必需品。本文将介绍大数据处理与分析技术的概念,意义、应用场景以及未来发展趋势。
50 3
|
12天前
|
机器学习/深度学习 人工智能 安全
Azure Databricks实战:在云上轻松进行大数据分析与AI开发
【4月更文挑战第8天】Databricks在大数据分析和AI开发中表现出色,简化流程并提高效率。文中列举了三个应用场景:数据湖分析、实时流处理和AI机器学习,并阐述了Databricks的一体化平台、云原生弹性及企业级安全优势。博主认为,Databricks提升了研发效能,无缝集成Azure生态,并具有持续创新潜力,是应对大数据挑战和加速AI创新的理想工具。
36 0