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

目录
相关文章
|
30天前
|
数据采集 人工智能 分布式计算
ODPS在AI时代的发展战略与技术演进分析报告
ODPS(现MaxCompute)历经十五年发展,从分布式计算平台演进为AI时代的数据基础设施,以超大规模处理、多模态融合与Data+AI协同为核心竞争力,支撑大模型训练与实时分析等前沿场景,助力企业实现数据驱动与智能化转型。
144 4
|
2月前
|
消息中间件 NoSQL 数据可视化
数据说了算,可你得“听得快”——聊聊大数据里的实时分析
数据说了算,可你得“听得快”——聊聊大数据里的实时分析
80 2
|
3月前
|
数据采集 人工智能 算法
数据没洗干净,分析全白干:聊聊大数据里的“洗澡水”工程
数据没洗干净,分析全白干:聊聊大数据里的“洗澡水”工程
97 1
|
5月前
|
数据采集 机器学习/深度学习 算法
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
209 4
|
2月前
|
SQL 存储 机器学习/深度学习
基于 Dify + Hologres + QWen3 进行企业级大数据的处理和分析
在数字化时代,企业如何高效处理和分析海量数据成为提升竞争力的关键。本文介绍了基于 Dify 平台与 Hologres 数据仓库构建的企业级大数据处理与分析解决方案。Dify 作为开源大语言模型平台,助力快速开发生成式 AI 应用;Hologres 提供高性能实时数仓能力。两者结合,不仅提升了数据处理效率,还实现了智能化分析与灵活扩展,为企业提供精准决策支持,助力数字化转型。
501 2
基于 Dify + Hologres + QWen3 进行企业级大数据的处理和分析
|
2月前
|
存储 Java 大数据
Java 大视界 -- Java 大数据在智能家居能源消耗模式分析与节能策略制定中的应用(198)
简介:本文探讨Java大数据技术在智能家居能源消耗分析与节能策略中的应用。通过数据采集、存储与智能分析,构建能耗模型,挖掘用电模式,制定设备调度策略,实现节能目标。结合实际案例,展示Java大数据在智能家居节能中的关键作用。
|
2月前
|
人工智能 边缘计算 分布式计算
ODPS 在 AI 时代的引领潜力与突破方向分析
阿里云 ODPS 凭借超大规模数据处理、多模态架构与 Data+AI 融合优势,正引领 AI 时代数据革命。其弹性算力支撑大模型训练,多模态处理提升数据利用率,AI 工程化能力完善。但实时性、边缘计算与跨云协同仍存短板。未来将重点突破智能数据编织、异构计算调度、隐私增强平台与边缘云端协同,加速行业落地。结合绿色计算与开放生态,ODPS 有望成为 AI 驱动的数据基础设施核心。
79 0
|
3月前
|
数据采集 搜索推荐 算法
Java 大视界 -- Java 大数据在智能教育学习社区用户互动分析与社区活跃度提升中的应用(274)
本文系统阐述 Java 大数据技术在智能教育学习社区中的深度应用,涵盖数据采集架构、核心分析算法、活跃度提升策略及前沿技术探索,为教育数字化转型提供完整技术解决方案。
|
3月前
|
存储 缓存 分布式计算
OSS大数据分析集成:MaxCompute直读OSS外部表优化查询性能(减少数据迁移的ETL成本)
MaxCompute直读OSS外部表优化方案,解决传统ETL架构中数据同步延迟高、传输成本大、维护复杂等问题。通过存储格式优化(ORC/Parquet)、分区剪枝、谓词下推与元数据缓存等技术,显著提升查询性能并降低成本。结合冷热数据分层与并发控制策略,实现高效数据分析。
|
6月前
|
SQL 分布式计算 数据挖掘
从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践
川航选择引入 SelectDB 建设湖仓一体大数据分析引擎,取得了数据导入效率提升 3-6 倍,查询分析性能提升 10-18 倍、实时性提升至 5 秒内等收益。
426 63
从湖仓分离到湖仓一体,四川航空基于 SelectDB 的多源数据联邦分析实践

热门文章

最新文章