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

目录
相关文章
|
4月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
5月前
|
数据可视化 搜索推荐 大数据
基于python大数据的北京旅游可视化及分析系统
本文深入探讨智慧旅游系统的背景、意义及研究现状,分析其在旅游业中的作用与发展潜力,介绍平台架构、技术创新、数据挖掘与服务优化等核心内容,并展示系统实现界面。
|
6月前
|
数据采集 人工智能 分布式计算
ODPS在AI时代的发展战略与技术演进分析报告
ODPS(现MaxCompute)历经十五年发展,从分布式计算平台演进为AI时代的数据基础设施,以超大规模处理、多模态融合与Data+AI协同为核心竞争力,支撑大模型训练与实时分析等前沿场景,助力企业实现数据驱动与智能化转型。
460 4
|
6月前
|
JSON 大数据 API
巧用苏宁易购 API,精准分析苏宁易购家电销售大数据
在数据驱动的电商时代,精准分析销售数据能助力企业优化库存、提升营销效果。本文详解如何利用苏宁易购API获取家电销售数据,结合Python进行数据清洗与统计分析,实现销量预测与洞察提取,帮助企业降本增效。
174 0
|
7月前
|
消息中间件 NoSQL 数据可视化
数据说了算,可你得“听得快”——聊聊大数据里的实时分析
数据说了算,可你得“听得快”——聊聊大数据里的实时分析
180 2
|
5月前
|
存储 SQL 分布式计算
终于!大数据分析不用再“又要快又要省钱”二选一了!Dataphin新功能太香了!
Dataphin推出查询加速新功能,支持用StarRocks等引擎直连MaxCompute或Hadoop查原始数据,无需同步、秒级响应。数据只存一份,省成本、提效率,权限统一管理,打破“又要快又要省”的不可能三角,助力企业实现分析自由。
264 49
|
4月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
4月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
5月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。