终于,为了大数据分析我还是开启了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

目录
相关文章
|
1月前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
102 2
|
3天前
|
SQL 分布式计算 DataWorks
DataWorks产品测评|基于DataWorks和MaxCompute产品组合实现用户画像分析
本文介绍了如何使用DataWorks和MaxCompute产品组合实现用户画像分析。首先,通过阿里云官网开通DataWorks服务并创建资源组,接着创建MaxCompute项目和数据源。随后,利用DataWorks的数据集成和数据开发模块,将业务数据同步至MaxCompute,并通过ODPS SQL完成用户画像的数据加工,最终将结果写入`ads_user_info_1d`表。文章详细记录了每一步的操作过程,包括任务开发、运行、运维操作和资源释放,帮助读者顺利完成用户画像分析。此外,还指出了文档中的一些不一致之处,并提供了相应的解决方法。
|
1天前
|
分布式计算 DataWorks 搜索推荐
用户画像分析(MaxCompute简化版)
通过本教程,您可以了解如何使用DataWorks和MaxCompute产品组合进行数仓开发与分析,并通过案例体验DataWorks数据集成、数据开发和运维中心模块的相关能力。
25 4
|
21天前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
40 4
|
22天前
|
关系型数据库 分布式数据库 数据库
PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具
在数字化时代,企业面对海量数据的挑战,PolarDB 以其出色的性能和可扩展性,成为大数据分析的重要工具。它不仅支持高速数据读写,还通过数据分区、索引优化等策略提升分析效率,适用于电商、金融等多个行业,助力企业精准决策。
33 4
|
22天前
|
机器学习/深度学习 分布式计算 算法
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
137 5
|
1月前
|
存储 监控 数据挖掘
【Clikhouse 探秘】ClickHouse 物化视图:加速大数据分析的新利器
ClickHouse 的物化视图是一种特殊表,通过预先计算并存储查询结果,显著提高查询性能,减少资源消耗,适用于实时报表、日志分析、用户行为分析、金融数据分析和物联网数据分析等场景。物化视图的创建、数据插入、更新和一致性保证通过事务机制实现。
126 14
|
2月前
|
数据采集 数据可视化 大数据
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
这篇文章介绍了如何使用Python中的matplotlib和numpy库来创建箱线图,以检测和处理数据集中的异常值。
60 1
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
|
1月前
|
消息中间件 分布式计算 大数据
数据为王:大数据处理与分析技术在企业决策中的力量
【10月更文挑战第29天】在信息爆炸的时代,大数据处理与分析技术为企业提供了前所未有的洞察力和决策支持。本文探讨了大数据技术在企业决策中的重要性和实际应用,包括数据的力量、实时分析、数据驱动的决策以及数据安全与隐私保护。通过这些技术,企业能够从海量数据中提取有价值的信息,预测市场趋势,优化业务流程,从而在竞争中占据优势。
101 2
|
1月前
|
数据采集 机器学习/深度学习 搜索推荐
大数据与社交媒体:用户行为分析
【10月更文挑战第31天】在数字化时代,社交媒体成为人们生活的重要部分,大数据技术的发展使其用户行为分析成为企业理解用户需求、优化产品设计和提升用户体验的关键手段。本文探讨了大数据在社交媒体用户行为分析中的应用,包括用户画像构建、情感分析、行为路径分析和社交网络分析,以及面临的挑战与机遇。