scala
文章平均质量分 73
lucasmaluping
这个作者很懒,什么都没留下…
展开
-
Scala中foldLeft的简单使用总结
原地址:Scala中foldLeft的简单使用总结_Scala中foldLeft的简单使用总结-CSDN博客Scala中foldLeft的简单使用总结由于工作需要,博主在写spark相关业务代码时用到foldLeft,经过一番搜寻发现很多文章对这个函数的讲解,于初学者来说不好理解,特此我来做个简单易懂的分析总结,供大家参考。若发现理解上的偏差,还请多指教。源码分析def seq: TraversableOnce[A]上面两段代码是scala.collection.Traversable原创 2021-09-17 16:54:56 · 487 阅读 · 0 评论 -
scala语法 (+: 和 :+ 和 _*)
将函数 赋值给一个变量,注意语法val max4 = max3 _如果函数的参数,函数体(右边),有且仅使用一次,参数可以使用下划线_代替println("--litter--")greeting("litter",println(_))作为函数的参数一个匿名的函数传递给一个方法或者函数的时候,scala会尽量推断出参数类型。例如一个完整的匿名函数作为参数可以写为scala> def compute(f: (Double)=>Double) = f(3)compute:原创 2021-09-16 20:44:33 · 495 阅读 · 0 评论 -
sparkMLib
1.读源文件2、根据源文件rdd做出特征向量Vector3、根据特征向量Vector做出标签点LabeledPoint4、根据标签点LabeledPoint做出训练数据trainingData5、做出LogisticRegressionWithSGD算法对象6、把训练数据trainingData传给LogisticRegressionWithSGD的run方法做出model(公式)7、根据公式做出新数据的预测代码:依赖: <dependency>原创 2020-07-06 10:29:41 · 274 阅读 · 0 评论 -
Scala排序
排序方法在实际的应用场景中非常常见,Scala里面有三种排序方法,分别是: sorted,sortBy ,sortWith分别介绍下他们的功能:(1)sorted对一个集合进行自然排序,通过传递隐式的Ordering(2)sortBy对一个属性或多个属性进行排序,通过它的类型。(3)sortWith基于函数的排序,通过一个comparator函数,实现自定义排序的逻辑。例子一:基于单集合单字段的排序val xs=Seq(1,5,3,4,6,2) println("..原创 2020-06-17 09:00:20 · 904 阅读 · 0 评论 -
Spark--数据的读取与保存
一、动机 我们已经学了很多在 Spark 中对已分发的数据执行的操作。到目前为止,所展示的示例都是从本地集合或者普通文件中进行数据读取和保存的。但有时候,数据量可能大到无法放在一台机器中,这时就需要探索别的数据读取和保存的方法了。 Spark 及其生态系统提供了很多可选方案。本章会介绍以下三类常见的数据源。 • 文件格式与文件系统:对于存储在本地文件系统或分布式文件系统(比如 N...原创 2020-03-26 10:27:55 · 1027 阅读 · 0 评论 -
PageRank算法
一、PageRank算法简介(摘自《Spark快速大数据分析》)PageRank是执行多次连接的一个迭代算法,因此它是RDD分区操作的一个很好的用例。算法会维护两个数据集:一个由(pageID,linkList)的元素组成,包含每个页面的相邻页面的列表;另一个由(pageID,rank)元素组成,包含每个页面的当前排序值。它按如下步骤进行计算。将每个页面的排序值初始化为1.0。...原创 2020-03-23 11:09:09 · 405 阅读 · 0 评论 -
pairRDD的CombineByKey
RDD的CombineByKey使用方法这是一个很抽象化的方法,一开始看得一头雾水。但是大部分的聚合函数都基于这个方法去实现的,比如常用的reduceByKey,所以这个方法很重要。方法参数def combineByKey[C]( //在找到给定分区中第一次碰到的key(在RDD元素中)时被调用。此方法为这个key初始化一个累加器。 createCombine...原创 2020-03-19 00:16:47 · 157 阅读 · 0 评论 -
SCALA中:: , +:, :+, :::, +++的区别
初学scala的人都会被Seq的各种操作符所迷惑。下面简单列举一下各个Seq操作符的区别。4种操作符的区别和联系:: 该方法被称为cons,意为构造,向队列的头部追加数据,创造新的列表。用法为x::list,其中x为加入到头部的元素,无论x是列表与否,它都只将成为新生成列表的第一个元素,也就是说新生成的列表长度为list的长度+1(btw, x::list等价于list.::(x))scal...原创 2019-11-26 21:10:49 · 320 阅读 · 0 评论 -
Scala 文件 I/O
Scala 文件 I/OScala 进行文件写操作,直接用的都是 java中 的 I/O 类 (java.io.File):import java.io._object Test { def main(args: Array[String]) { val writer = new PrintWriter(new File("test.txt" )) w...原创 2019-11-13 08:11:06 · 162 阅读 · 0 评论 -
Scala 提取器(Extractor)
Scala 提取器(Extractor)提取器是从传递给它的对象中提取出构造该对象的参数。Scala 标准库包含了一些预定义的提取器,我们会大致的了解一下它们。Scala 提取器是一个带有unapply方法的对象。unapply方法算是apply方法的反向操作:unapply接受一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。以下实例演示了邮件地址的提取器对象:...原创 2019-11-13 08:10:45 · 140 阅读 · 0 评论 -
Scala 正则表达式
Scala 正则表达式Scala 通过 scala.util.matching 包中的Regex类来支持正则表达式。以下实例演示了使用正则表达式查找单词Scala:import scala.util.matching.Regexobject Test { def main(args: Array[String]) { val pattern = "Scala...原创 2019-11-13 08:11:17 · 247 阅读 · 0 评论 -
Scala 异常处理
Scala 异常处理Scala 的异常处理和其它语言比如 Java 类似。Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。抛出异常Scala 抛出异常的方法和 Java一样,使用 throw 方法,例如,抛出一个新的参数异常:throw new IllegalArgumentException捕获异常异常捕捉的机制与其他语言中一样,...原创 2019-11-12 08:29:21 · 117 阅读 · 0 评论 -
Scala 模式匹配
Scala 模式匹配Scala 提供了强大的模式匹配机制,应用也非常广泛。一个模式匹配包含了一系列备选项,每个都开始于关键字case。每个备选项都包含了一个模式及一到多个表达式。箭头符号=>隔开了模式和表达式。以下是一个简单的整型值模式匹配实例:object Test { def main(args: Array[String]) { println...原创 2019-11-12 08:29:13 · 121 阅读 · 0 评论 -
Scala Trait(特征)
Scala Trait(特征)Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不同的是,它还可以定义属性和方法的实现。一般情况下Scala的类只能够继承单一父类,但是如果是 Trait(特征) 的话就可以继承多个,从结果来看就是实现了多重继承。Trait(特征) 定义的方式与类类似,但它使用的关键字是trait,如下所示:trait...原创 2019-11-12 08:29:07 · 113 阅读 · 0 评论 -
Scala 类和对象
Scala 类和对象类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。我们可以使用 new 关键字来创建类的对象,实例如下:class Point(xc: Int, yc: Int) { var x: Int = xc var y: Int = yc...原创 2019-11-12 08:27:38 · 160 阅读 · 0 评论 -
Scala Iterator(迭代器)
Scala Iterator(迭代器)Scala 集合Scala Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法。迭代器 it 的两个基本操作是next和hasNext。调用it.next()会返回迭代器的下一个元素,并且更新迭代器的状态。调用it.hasNext()用于检测集合中是否还有元素。让迭代器 it 逐个返回所有元素最简单的方法...原创 2019-11-12 08:28:59 · 196 阅读 · 0 评论 -
Scala Collection
Scala CollectionScala提供了一套很好的集合实现,提供了一些集合类型的抽象。Scala 集合分为可变的和不可变的集合。可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。接...原创 2019-11-12 08:27:28 · 151 阅读 · 0 评论 -
Scala 数组
Scala 教程Scala 简介Scala 安装及环境配置Scala 基础语法Scala 数据类型Scala 变量Scala 访问修饰符Scala 运算符Scala IF...ELSE 语句Scala 循环Scala 方法与函数Scala 闭包Scala 字符串Scala 数组Scala Collection(集合)Scala Iterator(迭代器)Scala 类和对象Scala Trait(...原创 2019-11-12 08:27:08 · 465 阅读 · 0 评论 -
Scala 字符串
Scala 字符串以下实例将字符串赋值给一个常量:object Test { val greeting: String = "Hello,World!" def main(args: Array[String]) { println( greeting ) }}以上实例定义了变量 greeting,为字符串常量,它的类型为 String (java....原创 2019-11-12 08:27:19 · 230 阅读 · 0 评论 -
Scala 闭包
Scala 闭包闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。闭包通常来讲可以简单的认为是可以访问一个函数里面局部变量的另外一个函数。如下面这段匿名的函数:val multiplier = (i:Int) => i * 10 函数体内有一个变量 i,它作为函数的一个参数。如下面的另一段代码:val multiplier = (i:Int) =>...原创 2019-11-12 08:26:45 · 76 阅读 · 0 评论 -
Scala 方法与函数
Scala 方法与函数Scala 有方法与函数,二者在语义上的区别很小。Scala 方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。Scala 中的方法跟 Java 的类似,方法是组成类的一部分。Scala 中的函数则是一个完整的对象,Scala 中的函数其实就是继承了 Trait 的类的对象。Scala 中使用val语句可以定义函数,...原创 2019-11-12 08:26:29 · 138 阅读 · 0 评论 -
Scala 循环
Scala 循环有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了更为复杂执行路径的多种控制结构。循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图:循环类型Scala 语言提供了以下几种循环类型。点击链接查看每个类型的细节。循环类型 描述 ...原创 2019-11-11 22:10:30 · 131 阅读 · 0 评论 -
Scala IF...ELSE 语句
Scala IF...ELSE 语句Scala IF...ELSE 语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程:if 语句if 语句有布尔表达式及之后的语句块组成。语法if 语句的语法格式如下:if(布尔表达式){ // 如果布尔表达式为 true 则执行该语句块}如果布尔...原创 2019-11-11 22:09:05 · 233 阅读 · 0 评论 -
二进制位运算---左移右移
二进制位运算---左移(<<)右移(>>)(1).二进制中负数的计算负数以正数的补码表示原码:一个整数按照绝对值的大小转化成二进制的数反码:将二进制数按位取反补码:反码加 1以-14 举例原码:14 即 00000000 00000000 00000000 00001110反码: 11111111 11111111 11111111 1...原创 2019-11-11 22:03:47 · 10910 阅读 · 0 评论 -
与、或、异或运算
与、或、异或运算1.与运算(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0;0&1=0;1&0=0;1&1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3&5即 0000 0011 & 0000 0101 = 0000 0001因此,3&a...原创 2019-11-11 21:55:22 · 486 阅读 · 0 评论 -
Scala 运算符
Scala 运算符一个运算符是一个符号,用于告诉编译器来执行指定的数学运算和逻辑运算。Scala 含有丰富的内置运算符,包括以下几种类型: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 接下来我们将为大家详细介绍以上各种运算符的应用。算术运算符下表列出了 Scala 支持的算术运算符。假定变量 A 为 10,B 为 ...原创 2019-11-11 21:53:40 · 218 阅读 · 0 评论 -
Scala 访问修饰符
Scala 访问修饰符Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。如果没有指定访问修饰符,默认情况下,Scala 对象的访问级别都是 public。Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员。私有(Private)成员用 private 关键字修饰...原创 2019-11-11 21:50:42 · 133 阅读 · 0 评论 -
Scala 变量
Scala 变量变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。基于变量的数据类型,操作系统会进行内存分配并且决定什么将被储存在保留内存中。因此,通过给变量分配不同的数据类型,你可以在这些变量中存储整数,小数或者字母。变量声明在学习如何声明变量与常量之前,我们先来了解一些变量与常量。一、变量: 在程序运行过程中其值可能发生改变的量叫做变量。如...原创 2019-11-11 21:39:15 · 136 阅读 · 0 评论 -
Scala 数据类型
Scala 数据类型Scala 与 Java有着相同的数据类型,下表列出了 Scala 支持的数据类型:数据类型 描述 Byte 8位有符号补码整数。数值区间为 -128 到 127 Short 16位有符号补码整数。数值区间为 -32768 到 32767 Int 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 ...原创 2019-11-11 21:35:11 · 203 阅读 · 0 评论 -
Scala基础语法
Scala 基础语法如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的。我们可以认为 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递。接下来我们来理解下,类,对象,方法,实例变量的概念: 对象 -对象有属性和行为。例如:一...原创 2019-11-11 21:30:33 · 231 阅读 · 0 评论 -
Scala函数初识
scala中的map语法:def map[B](f: Int => B)(implicit ct: scala.reflect.ClassTag[B]): Array[B]override def map[B](f: Int => B): scala.collection.mutable.ArraySeq[B]应用:给的scala函数要符合函数声明标准计算方式为乘1...原创 2019-08-09 10:06:18 · 803 阅读 · 0 评论