2021年大数据常用语言Scala(一):Scala简介
目录
一、Scala简介
为什么使用scala
Scala对比Java
案例
一、Scala简介
scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程
- 多范式:就是包含多种编程思想。目前主流的编程思想有4中,即面向对象、面向过程、面向函数、以及泛型
- 面向函数一句话形容:函数也是一个对象,可以作为参数进行传递。
也就是:
面向对象 :传递的参数是具体的对象或者值
函数式编程:传递的参数可以是一个函数(处理逻辑)
- 运行在JVM之上:
Scala程序编译执行流程
就像学习MapReduce中, 各种序列化器. 类比一下, 比如: IntWritable 以及 Text , 都是把内容进行序列化, 也就是输入不同, 输出相同. 不同的输入, 序列化为同样格式的内容, 运行在hadoop上. 同理, 我们可以认为, scala 和 java 就类比有个 ScalaWritable 以及 JavaWritable. 负责对java 以及Scala进行序列化, 输出是什么呢? 输出就是我们的字节码, 也就是 .class 文件. 用于运行在JVM之上.
早期,scala刚出现的时候,并没有怎么引起重视,随着Spark和Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala的主要优势是它的表达性。
为什么使用scala
开发大数据应用程序(Spark程序、Flink程序)
Spark生态并不是要取代Hadoop生态,而是为了更好的拓展大数据生态,两者结合.
而Spark由我们Scala开发的,我们学习Scala为了更好的去学习Spark。
表达能力强,一行代码抵得上Java多行,开发速度快。 优雅,代码简介逻辑更加清晰。
兼容Java,可以访问庞大的Java类库,例如:操作mysql、redis、freemarker、activemq等等
Scala对比Java
通过下面的案例,对比分别使用Java和Scala实现的代码数量
案例
定义三个实体类(用户、订单、商品)
Java代码
/*** 用户实体类*/
public class User {private String name;private List<Order> orders;public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Order> getOrders() {return orders;}public void setOrders(List<Order> orders) {this.orders = orders;}
}/*** 订单实体类*/
public class Order {private int id;private List<Product> products;public int getId() {return id;}public void setId(int id) {this.id = id;}public List<Product> getProducts() {return products;}public void setProducts(List<Product> products) {this.products = products;}
}/*** 商品实体类*/
public class Product {private int id;private String category;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}
}
Scala代码
case class User(var name:String, var orders:List[Order]) // 用户实体类
case class Order(var id:Int, var products:List[Product]) // 订单实体类
case class Product(var id:Int, var category:String) // 商品实体类
2021年大数据常用语言Scala(一):Scala简介相关推荐
- 2021年大数据常用语言Scala(四):基础语法学习 声明变量
目录 声明变量 语法格式 在解释器中定义一个变量 val和var变量 使用类型推断来定义变量 惰性赋值 声明变量 我们将来每一天编写scala程序都会定义变量.那scala语言如何定义变量呢? 语法格 ...
- 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)
目录 特质(trait) 作为接口使用 定义具体的方法 定义具体方法和抽象方法 定义具体的字段和抽象的字段 实例对象混入trait trait调用链 trait的构造机制 trait继承class 特 ...
- 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握
目录 列表 List 重点掌握 不可变列表定义 可变列表 列表常用操作 列表 List 重点掌握 列表是scala中最重要的.也是最常用的数据结构.List具备以下性质: 可以保存重复的值 有先后顺序 ...
- 2021年大数据常用语言Scala(十四):基础语法学习 数组 重点掌握
目录 数组 重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组 重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...
- 2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类
目录 scala面向对象 MAVEN依赖 类 - 掌握 创建类和对象 - 掌握 getter/setter - 了解 类的构造器 - 掌握 scala面向对象 MAVEN依赖 <?xml ver ...
- 2021年大数据常用语言Scala(二):Scala开发环境安装
目录 开发环境安装 安装JDK 安装scala SDK 步骤 具体操作 安装IDEA scala插件 步骤 开发环境安装 学习如何编写scala代码之前,需要先安装scala编译器以及开发工具 sca ...
- 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数
目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...
- 2021年大数据常用语言Scala(三十六):scala高级用法 泛型
目录 泛型 定义一个泛型方法 定义一个泛型类 上下界 协变.逆变.非变 非变 协变 逆变 泛型 scala和Java一样,类和特质.方法都可以支持泛型.我们在学习集合的时候,一般都会涉及到泛型. sc ...
- 2021年大数据常用语言Scala(二十七):函数式编程 聚合操作
目录 聚合操作 聚合 reduce 定义 案例 折叠 fold 定义 案例 聚合操作 聚合操作,可以将一个列表中的数据合并为一个.这种操作经常用来统计分析中 聚合 reduce reduce表示 ...
最新文章
- C++ 笔记(12)— 判断(if/if...else/switch、条件运算符)
- 简单好用!利用Spring AOP技术10分钟实现一个读写分离方案
- Linux要学git吗,git学习一 基于linux ubuntu git安装与配置
- 一文搞定Vim/Vi编辑器
- Docker: Jenkins里的pipeline编写基本技巧
- SpaceVim 语言模块 lua
- WORD出错:布局也会超出内容区
- x1c更改语言系统后开机超慢,大明:电脑重装系统后一个月变慢?简单五步设置,解决卡慢问题...
- [转]中国著名黑客你知道多少?
- 宏基 Acer 4741G ubuntu10.10 GT 330M显卡驱动
- matlab学习笔记 repmat函数与kron函数之区别
- ipsec-tools之racoon搭建
- 「链节点活动年度总结」2019年区块链行业会议回顾
- Unity人工智能之不断自我进化的五人足球赛
- 人工智能 漆桂林_认识一下计算机的新成员——人工智能
- 【敬伟ps教程】平移、缩放、移动、选区
- 区块链数字签名、验签,以及椭圆曲线算法JS库—elliptic的使用
- 最短路及最短路计数(SPFA)
- C专家编程 --- 书中案例汇编与分析(持续更新中)
- Unity3D 常用贴图加载方式