
大数据必学语言Scala
文章平均质量分 77
Scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程,本栏目特惠价29.9元,火热🔥订阅中;七天后涨价一倍,早买不会亏,早购买早学习,价格又优惠,关键付费你才会变得珍惜,学习动力大,博主有你们的支持,会投入精力更新优化栏目,实属双赢模式
Lansonli
CSDN大数据领域博客专家,InfoQ写作社区2022年度影响力作者、华为云社区2022年度十佳博主、华为云享专家、阿里云专家博主、腾讯云开发者社区2022年度最佳作者、腾云先锋(TDP)核心成员、51CTO专家博主,全网二十万多粉丝,知名互联网公司大数据高级开发工程师
展开
-
Scala安装使用
Scala IDE就是Scala官网中针对eclipse稳定版本配置好了Scala的插件。Scala IDE 就是配置好Scala插件的eclipse。点击第三步,弹出选择SDK,点击Browse选择本地安装的Scala目录。选择system对应的Scala版本即可。注意:这里建议将Scala安装到纯英文没有空格和特殊符号的路径下。避免后期使用Scala版本出现问题。以下载Scala2.11为例,操作在Windows中安装Scala。注意:这里安装了Scala,所以这里显示“Uninstall”。.....原创 2022-08-05 08:30:57 · 1088 阅读 · 26 评论 -
大数据必学语言Scala(三十八):scala高级用法 隐式转换和隐式参数
目录隐式转换和隐式参数隐式转换自动导入隐式转换方法隐式转换的时机隐式参数隐式转换和隐式参数隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能。我们可以很方便地利用隐式转换来丰富现有类的功能。隐式转换来看一个案例,objectSuperIntDemo {defmain(args:Array[String]):Unit={vala:Int=1// 使用中缀调用to方法println(a...原创 2021-05-15 00:32:35 · 2999 阅读 · 52 评论 -
大数据必学语言Scala(三十七):scala高级用法 高阶函数用法
目录高阶函数用法作为值的函数匿名函数柯里化(多参数列表)闭包高阶函数用法Scala 混合了面向对象和函数式的特性,在函数式编程语言中,函数是“头等公民”,它和Int、String、Class等其他类型处于同等的地位,可以像其他任何数据类型一样被传递和操作。高阶函数包含:作为值的函数、匿名函数、闭包、柯里化等等。作为值的函数在scala中,函数就像和数字、字符串一样,可以将函数传递给一个方法。我们可以对算法进行封装,然后将具体的动作传递给算法,这种特性很有用。.原创 2021-05-14 23:56:40 · 1569 阅读 · 17 评论 -
大数据必学语言Scala(三十六):scala高级用法 泛型
目录泛型定义一个泛型方法定义一个泛型类上下界协变、逆变、非变非变协变逆变泛型scala和Java一样,类和特质、方法都可以支持泛型。我们在学习集合的时候,一般都会涉及到泛型。scala>vallist1:List[String]=List("1","2","3")list1:List[String]=List(1,2,3)scala>vallist1:List[String]=List("1","2","3"...原创 2021-05-14 22:15:50 · 1241 阅读 · 10 评论 -
大数据必学语言Scala(三十五):scala高级用法 提取器(Extractor)
目录提取器(Extractor)定义提取器提取器(Extractor)我们之前已经使用过scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量。例如:// 定义样例类caseclassSubmitTask(id:String,name:String)caseclassHeartBeat(time:Long)caseobjectCheckTimeOutTaskvalmsg1 =SubmitTask("001","ta...原创 2021-05-14 21:59:27 · 995 阅读 · 4 评论 -
大数据必学语言Scala(三十四):scala高级用法 异常处理
目录异常处理捕获异常抛出异常异常处理Scala中 无需在方法上声明异常来看看下面一段代码。defmain(args:Array[String]):Unit={vali =10/0println("你好!")}Exception in thread "main"java.lang.ArithmeticException:/by zeroat ForDemo$.main(ForDemo.scala:3)at Fo...原创 2021-05-13 23:09:29 · 1662 阅读 · 14 评论 -
大数据必学语言Scala(三十三):scala高级用法 模式匹配
目录模式匹配简单匹配守卫匹配类型匹配集合变量声明中的模式匹配匹配样例类 - 常用Option类型 - 重点掌握经常用偏函数 - 理解正则表达式 - 了解模式匹配scala中有一个非常强大的模式匹配机制,可以应用在很多场景:switch语句 类型查询 以及快速获取数据简单匹配在Java中,有switch关键字,可以简化if条件判断语句。在scala中,可以使用match表达式替代。语法结构:变量 match{case"常...原创 2021-05-13 00:14:41 · 1795 阅读 · 46 评论 -
大数据必学语言Scala(三十二):scala高级用法 样例类
目录样例类定义样例类样例类方法样例对象样例类样例类是一种特殊类,它可以用来快速定义一个用于保存数据的类(类似于Java POJO类),而且它会自动生成apply方法,允许我们快速地创建样例类实例对象。后面,在并发编程和spark、flink这些框架也都会经常使用它。定义样例类语法结构:caseclass样例类名(成员变量名1:类型1,成员变量名2:类型2,成员变量名3:类型3)[{类体}]示例1:// 定义一个样例类// 样例类有两个成员name...原创 2021-05-12 21:53:16 · 1809 阅读 · 18 评论 -
大数据必学语言Scala(三十一):scala面向对象 特质(trait)
目录特质(trait)作为接口使用定义具体的方法定义具体方法和抽象方法定义具体的字段和抽象的字段实例对象混入traittrait调用链trait的构造机制trait继承class特质(trait)OLTP = online transaction processing大数据:OLAP = online analysis processingscala中没有interfact的接口可以用trait来实现接口的功能。同时trait比接口更强大特质.原创 2021-05-11 00:08:20 · 2009 阅读 · 7 评论 -
大数据必学语言Scala(三十):scala面向对象 继承(extends)
继承(extends)简单继承scala和Java一样,使用extends关键字来实现继承。可以在子类中定义父类中没有的字段和方法,或者重写父类的方法。示例1:实现简单继承classPerson {varname ="super"defgetName =this.name}classStudent extendsPersonobjectMain13 {defmain(args:Array[String]):Unit={va...原创 2021-05-10 23:41:41 · 1678 阅读 · 7 评论 -
大数据必学语言Scala(二十九):scala面向对象 单例对象
目录单例对象定义object - 掌握伴生对象 - 掌握apply方法 - 掌握main方法单例对象Scala中没有static关键字,但是它支持静态如果要定义静态的东西,统统定义到object中语法:objectxxx{// 内容}反向理解,class中的东西, 全部是 非静态的定义object - 掌握定义单例对象和定义类很像,就是把class换成object示例:定义一个工具类,用来格式化日期时间objectDateUti...原创 2021-05-10 21:14:01 · 1403 阅读 · 5 评论 -
大数据必学语言Scala(二十八):scala面向对象 MAVEN依赖和类
目录scala面向对象MAVEN依赖类 - 掌握创建类和对象 - 掌握getter/setter - 了解类的构造器 - 掌握scala面向对象MAVEN依赖<?xmlversion="1.0" encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan...原创 2021-05-10 00:12:10 · 1026 阅读 · 9 评论 -
大数据必学语言Scala(二十七):函数式编程 聚合操作
目录聚合操作聚合 reduce定义案例折叠 fold定义案例聚合操作聚合操作,可以将一个列表中的数据合并为一个。这种操作经常用来统计分析中聚合 reducereduce表示将列表,传入一个函数进行聚合计算定义方法签名defreduce[A1 >:A](op:(A1,A1)⇒ A1):A1方法解析 reduce方法 API 说明 泛型 ...原创 2021-05-09 09:34:51 · 1470 阅读 · 6 评论 -
大数据必学语言Scala(二十六):函数式编程 分组 groupBy
目录分组 groupBy定义示例分组 groupBy我们如果要将数据按照分组来进行统计分析,就需要使用到分组方法等同于SQL中的 group by的概念, 就是给数据按照指定的列进行分组用。定义groupBy表示按照函数将列表分成不同的组方法签名defgroupBy[K](f:(A)⇒ K):Map[K,List[A]]方法解析 groupBy方法 API 说明 泛型 ...原创 2021-05-09 01:15:48 · 2650 阅读 · 4 评论 -
大数据必学语言Scala(二十五):函数式编程 排序
目录排序默认排序 sorted指定字段排序 sortBy自定义排序 | sortWith排序在scala集合中,可以使用以下几种方式来进行排序sorted默认排序 sortBy指定字段排序 sortWith自定义排序默认排序 sorted示例定义一个列表,包含以下元素: 3, 1, 2, 9, 7对列表进行升序排序参考代码scala>List(3,1,2,9,7).sortedres16:List[Int]=List(...原创 2021-05-08 23:29:07 · 1560 阅读 · 6 评论 -
大数据必学语言Scala(二十四):函数式编程 过滤 filter
目录过滤 filter定义方法签名方法解析案例参考代码过滤 filter过滤符合一定条件的元素定义方法签名deffilter(p:(A)⇒ Boolean):TraversableOnce[A]方法解析 filter方法 API 说明 参数 p: (A) ⇒ Boolean 传入一个函数对象<br />接收一个...原创 2021-05-08 20:31:34 · 2262 阅读 · 7 评论 -
大数据必学语言Scala(二十三):函数式编程 扁平化映射 flatMap
目录扁平化映射 | flatMap定义案例扁平化映射 flatMap扁平化映射也是将来用得非常多的操作,也是必须要掌握的。定义可以把flatMap,理解为先map,然后再flatten就是说, 我们对待处理列表, 正常我们处理它 需要 先对其进行map操作, 然后再进行flatten操作 这样两步操作才可以得到我们想要的结果.如果我们有这样的需求, 我们就可以使用flatMap( 此方法帮我们实现 先map 后flatten的操作)map是将列表中的元素转..原创 2021-05-08 00:47:20 · 1042 阅读 · 2 评论 -
大数据必学语言Scala(二十二):函数式编程 映射 map
目录映射 | map用法案例一案例二映射 map集合的映射操作是将来在编写Spark/Flink用得最多的操作,是我们必须要掌握的。因为进行数据计算的时候,就是一个将一种数据类型转换为另外一种数据类型的过程。map方法接收一个函数,将这个函数应用到每一个元素,返回一个新的列表和foreach不同的是, map将处理好的元素封装到新的列表中, 并返回而foreach不会返回我们新的列表所以一般视使用场景, 来选择带返回的map还是不返回的foreach用..原创 2021-05-08 00:41:03 · 909 阅读 · 2 评论 -
大数据必学语言Scala(二十一):函数式编程 遍历 foreach
目录遍历 foreach使用类型推断简化函数定义使用下划线来简化函数定义遍历 foreach之前,学习过了使用for表达式来遍历集合。我们接下来将学习scala的函数式编程,使用foreach方法来进行遍历、迭代。它可以让代码更加简洁。用途:foreach 会帮我们对集合中的每一个元素取出来进行处理, 处理的逻辑由我们自行定义集合中的元素,都会传入给你提供的函数去计算方法签名foreach(f:(A)⇒ Unit):Unitf 表明一个函数, A表...原创 2021-05-08 00:12:03 · 1917 阅读 · 5 评论 -
大数据必学语言Scala(二十):函数式编程 介绍
目录函数式编程 介绍函数式编程的意义在哪?函数式编程 介绍我们将来使用Spark/Flink的大量业务代码都会使用到函数式编程。下面的这些操作是学习的重点。现在我们将会逐渐接触函数式编程的方式.比如我们要说的第一个foreach方法, 就是一个典型的函数式编程方式.我们将一个函数当做参数 传递给另一个方法/函数start...遍历(foreach) 映射(map) 映射扁平化(flatmap) 过滤(filter) 是否存在(exists) 排序(sorted、原创 2021-05-07 23:52:52 · 848 阅读 · 2 评论 -
大数据必学语言Scala(十九):基础语法学习 iterator迭代器
目录iterator迭代器使用迭代器遍历集合iterator迭代器scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合使用迭代器遍历集合使用iterator方法可以从集合获取一个迭代器 迭代器的两个基本操作 hasNext——查询容器中是否有下一个元素 next——返回迭代器的下一个元素,如果没有,抛出NoSuchElementException 每一个迭代器都是有状态的(只能用一次, 内部指针只走一次, 走到最后就结束了, 不会再回到开.原创 2021-05-07 00:28:34 · 1085 阅读 · 1 评论 -
大数据必学语言Scala(十八):基础语法学习 Map对象
目录Map对象不可变Map可变MapMap基本操作Map对象Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。不可变Map定义语法val/varmap =Map(键->值,键->值,键->值...) // 推荐,可读性更好val/varmap =Map((键,值),(键,值),(键,值),(键,值)...)示例定义一个映射,包含以下学生姓名和年龄数据"...原创 2021-05-06 23:43:29 · 1441 阅读 · 2 评论 -
大数据必学语言Scala(十七):基础语法学习 Set
目录Set不可变集可变集SetSet(集)是代表没有重复元素的集合。Set具备以下性质:元素不重复不保证插入顺序和List正好相反, List:元素可以重复保证插入顺序scala中的集也分为两种,一种是不可变集,另一种是可变集。不可变集定义语法创建一个空的不可变集,语法格式:val/var变量名 =Set[类型]()给定元素来创建一个不可变集,语法格式:val/var变量名 =Set(元素1,元素2,元素3......原创 2021-05-06 08:30:33 · 911 阅读 · 3 评论 -
大数据必学Scala(十六):基础语法学习 列表 List 重点掌握
目录列表 List 重点掌握不可变列表定义可变列表列表常用操作列表 List 重点掌握列表是scala中最重要的、也是最常用的数据结构。List具备以下性质:可以保存重复的值 有先后顺序在scala中,也有两种列表,一种是不可变列表、另一种是可变列表不可变列表定义不可变列表就是列表的元素、长度都是不可变的。语法使用List(元素1, 元素2, 元素3, ...)来创建一个不可变列表,语法格式:val/var变量名 =List(元素1,元素2,...原创 2021-05-05 23:27:45 · 1780 阅读 · 2 评论 -
大数据必学语言Scala(十五):基础语法学习 元组 重点掌握
目录元组 重点掌握定义元组访问元组元组 重点掌握元组可以用来包含一组不同类型的值。例如:姓名,年龄,性别,出生年月。元组的元素是不可变的。数组: 同一类数据成组元组: 不同的元素成组元祖内容(元素)不可变定义元组语法方式1: 使用括号来定义元组val/var元组 =(元素1,元素2,元素3....)方式2: 使用箭头来定义元组(元组只能有两个元素)val/var元组 =元素1->元素2这里预告一下, 使用箭头创建元...原创 2021-05-05 23:14:20 · 902 阅读 · 1 评论 -
大数据必学语言Scala(十四):基础语法学习 数组 重点掌握
目录数组重点掌握定长数组变长数组遍历数组数组常用算法数组重点掌握scala中数组的概念是和Java类似,可以用数组来存放一组数据。scala中,有两种数组,一种是定长数组,另一种是变长数组定长数组定长数组指的是数组的长度是不允许改变的 数组的元素是可以改变的java中数组是根据类型来定义的比如 int[] String[]在Scala中, 数组也是一个类, Array类, 存放的内容通过泛型来定义, 类似java中List的定义语法//...原创 2021-05-05 23:10:59 · 1075 阅读 · 3 评论 -
大数据必学语言Scala(十三):基础语法学习 函数 重点掌握
目录函数重点掌握定义函数方法和函数的区别方法转换为函数完全体函数函数重点掌握scala支持函数式编程,将来编写Spark/Flink程序中,会大量使用到函数函数和我们的对象一样, 在Scala中都是属于一等公民定义函数简便语法val函数变量名 =(参数名:参数类型,参数名:参数类型....)=>函数体[!TIP]函数是一个对象(变量) 类似于方法,函数也有输入参数和返回值 函数定义不需要使用def定义 无需指定返回值类型...原创 2021-05-05 21:46:10 · 877 阅读 · 1 评论 -
大数据必学语言Scala(十二):基础语法学习 方法调用方式
目录方法调用方式后缀调用法中缀调用法操作符即方法花括号调用法无括号调用法方法调用方式在scala中,有以下几种方法调用方式,后缀调用法 中缀调用法 花括号调用法 无括号调用法在后续编写spark、flink程序时,我们会使用到这些方法调用方式。后缀调用法这种方法与Java没有区别。语法对象名.方法名(参数)示例使用后缀法Math.abs求绝对值参考代码scala>Math.abs(-1)res3:Int=1...原创 2021-05-05 21:35:29 · 817 阅读 · 1 评论 -
大数据必学语言Scala(十一):基础语法学习 方法参数
目录方法参数默认参数带名参数变长参数方法参数scala中的方法参数,使用比较灵活。它支持以下几种类型的参数:默认参数 带名参数 变长参数默认参数在定义方法时可以给参数定义一个默认值。示例定义一个计算两个值相加的方法,这两个值默认为0调用该方法,不传任何参数参考代码// x,y带有默认值为0 defadd(x:Int=0,y:Int=0)=x +yadd()带名参数在调用方法时,可以指定参数的名称来进行调用。...原创 2021-05-05 21:14:15 · 1313 阅读 · 1 评论 -
大数据必学语言Scala(十):基础语法学习 方法
目录方法定义方法返回值类型推断方法一个类可以有自己的方法,scala中的方法和Java方法类似。但scala与Java定义方法的语法是不一样的。定义方法语法defmethodName(参数名:参数类型,参数名:参数类型):[returntype]={// 方法体:一系列的代码}[!NOTE]参数列表的参数类型不能省略(因为之前定义变量的时候可以省略, 这里不要混淆了,因为变量给了初始值,可以根据初始值推断类型) 返回值类型可以省略,由sc...原创 2021-05-05 21:04:07 · 1324 阅读 · 2 评论 -
大数据必学语言Scala(九):基础语法学习 break和continue
目录break和continue实现break实现continuebreak和continue在scala中,类似Java和C++的break/continue关键字被移除了 如果一定要使用break/continue,就需要使用scala.util.control包的Break类的breable和break方法。实现break用法导入Breaks包import scala.util.control.Breaks._ 使用breakable将for表达式包起来 for表达原创 2021-05-05 21:01:19 · 888 阅读 · 1 评论 -
大数据必学语言Scala(八):基础语法学习 循环
目录循环for表达式while循环循环在scala中,可以使用for和while,但一般推荐使用for表达式,因为for表达式语法更简洁for表达式语法for(i <-表达式/数组/集合){// 表达式}就是类似java中的 比如 for(String str: strings){ xxx...}, 从一个数组/集合/或者表达式中迭代取元素简单循环使用for表达式打印1-10的数字步骤生成1-10的数字(提示:使用to方法...原创 2021-05-05 18:50:11 · 872 阅读 · 2 评论 -
大数据必学语言Scala(七):基础语法学习 条件表达式
条件表达式条件表达式就是if表达式,if表达式可以根据给定的条件是否满足,根据条件的结果(真或假)决定执行对应的操作。scala条件表达式的语法和Java一样。有返回值的if与Java不一样的是,[!NOTE]在scala中,条件表达式也是有返回值的 在scala中,没有三元表达式,可以使用if表达式替代三元表达式示例定义一个变量sex,再定义一个result变量,如果sex等于"male",result等于1,否则result等于0参考代码scala...原创 2021-05-05 18:16:44 · 1225 阅读 · 1 评论 -
大数据必学语言Scala(六):基础语法学习 数据类型与操作符
数据类型与操作符scala中的类型以及操作符绝大多数和Java一样,我们主要来学习与Java不一样的一些用法 scala类型的继承体系数据类型 基础类型 类型说明 Byte 8位带符号整数 Short 16位带符号整数 Int 32位带符号整数 Long 64位带符号整数 Cha原创 2021-05-05 17:43:05 · 2511 阅读 · 7 评论 -
大数据必学语言Scala(五):基础语法学习 字符串
字符串scala提供多种定义字符串的方式,将来我们可以根据需要来选择最方便的定义方式。使用双引号 使用插值表达式 使用三引号使用双引号语法val/var变量名 =“字符串”示例有一个人的名字叫"hadoop",请打印他的名字以及名字的长度。参考代码scala>println(name +name.length)hadoop6使用插值表达式scala中,可以使用插值表达式来定义字符串,有效避免大量字符串的拼接。语法val/va...原创 2021-05-05 17:32:51 · 1359 阅读 · 3 评论 -
大数据必学语言Scala(四):基础语法学习 声明变量
目录声明变量语法格式在解释器中定义一个变量val和var变量使用类型推断来定义变量惰性赋值声明变量我们将来每一天编写scala程序都会定义变量。那scala语言如何定义变量呢?语法格式Java变量定义inta =0;在scala中,可以使用val或者var来定义变量,语法格式如下:val/var变量标识:变量类型 =初始值其中val定义的是不可重新赋值的变量 var定义的是可重新赋值的变量[!NOTE]scala中定义变量类...原创 2021-05-05 17:23:44 · 909 阅读 · 1 评论 -
大数据必学语言Scala(三):Scala解释器
目录scala解释器启动scala解释器执行scala代码退出解释器scala解释器后续我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代码,马上就可以让我们看到执行结果,用来测试比较方便。我们接下来学习:启动scala解释器 在scala解释器中执行scala代码 退出scala解释器启动scala解释器要启动scala解释器,只需要以下几步:按住windows键 + r 输入scala即可执行s.原创 2021-05-04 08:09:42 · 925 阅读 · 0 评论 -
大数据必学语言Scala(二):Scala开发环境安装
目录开发环境安装安装JDK安装scala SDK步骤具体操作安装IDEA scala插件步骤开发环境安装学习如何编写scala代码之前,需要先安装scala编译器以及开发工具scala程序运行需要依赖于Java类库,必须要有Java运行环境,scala才能正确执行根据前面学习的流程图,要编译运行scala程序,需要jdk(jvm)(负责运行) scala编译器(scala SDK)(负责编译代码成字节码)需要依次安装以下内容:安装JDK(没有JDK s原创 2021-05-04 08:03:14 · 1124 阅读 · 15 评论 -
大数据必学语言Scala(一):Scala简介
一、Scala简介scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程多范式:就是包含多种编程思想。目前主流的编程思想有4中,即面向对象、面向过程、面向函数、以及泛型 面向函数一句话形容:函数也是一个对象,可以作为参数进行传递。也就是:面向对象 :传递的参数是具体的对象或者值函数式编程:传递的参数可以是一个函数(处理逻辑)运行在JVM之上:Scala程序编译执行流程就像学习MapReduce中, 各种序列化器. 类比一下, 比如:...原创 2021-05-04 06:56:22 · 1869 阅读 · 8 评论