Scala
yukaiwen0102
久久为功
展开
-
运行Scala程序时的若干问题
形如:“ Error:(1, 8) Demois already defined as object Demo”问题 解决方法:File--Project Structures--Project Settings--Modules--*your project*--Sources--Sources将自己所建工程底下的*src*文件夹取消*Sources*标记,仅将*scala*文件...原创 2020-03-03 22:01:08 · 639 阅读 · 0 评论 -
Spark基础(5)文件数据读写
本地文件系统的数据读写scala> val textFile = sc.textFile("file:///usr/local/spark/mycode/wordcount/word.txt")scala> textFile.saveAsTextFile("file:///usr/local/spark/mycode/wordcount/writeback.txt")分布式文...原创 2020-03-02 22:40:37 · 559 阅读 · 0 评论 -
Spark基础(4)共享变量
广播变量广播变量(broadcast variables)允许程序开发人员在每个机器上面缓存一个只读的变量,而不是为机器上的每个任务都生成一个副本。spark的“行动”操作会跨越多个阶段(stage),对于每个阶段内的所有任务所需要的公共数据,Spark都会自动进行广播。可以通过SparkContext.broadcast(v)来从一个普通变量v中创建一个广播变量。这个广播变量就是对普通...原创 2020-03-02 17:52:49 · 225 阅读 · 0 评论 -
Spark基础(3)PairRDD-reduceByKey、groupByKey、sortByKey、sortBy、mapValue和join
PairRDD的创建可以采用多种方式创建Pair RDD,其中一种主要的方式是使用map()函数来实现。scala> val lines = sc.textFile("pathToFile")scala> val pairRDD = lines.flatMap(line => line.split(" ")).map(word => (word, 1))scal...原创 2020-02-25 20:33:17 · 641 阅读 · 0 评论 -
Spark基础(2)分区
当涉及到对程序性能有要求的时候,一定会使用分区技术。RDD是弹性分布式数据集,通常RDD很大,会被分成很多个分区,分别保存在不同的节点上。增加并行度,减少通信开销。分区原则:RDD分区的一个分区原则是是得分区的个数尽量等于集群中的CPU核心(Core)数目。如何手动设置分区(1)创建RDD时:在调用textFile和parallelize方法时手动指定分区个数即可,语法格式:sc...原创 2020-02-24 19:15:52 · 239 阅读 · 0 评论 -
Spark基础(1)RDD操作和持久化
RDD创建Spark采用textFile()方法来从文件系统中加载数据创建RDD 从文件系统中加载数据创建RDD。该方法把文件的URI作为参数,这个URI可以是:本地文件系统的地址;分布式文件系统HDFS的地址;Amazon S3的地址等等通过并行集合(数组)创建RDD调用SparkContext的parallelize方法,在Drive中一个已经存在的集合(数组)上创建。sca...原创 2020-02-21 12:51:21 · 468 阅读 · 0 评论 -
Scala基础(8) 模式匹配(增)
scala中的模式匹配最常用关于match语句中。下面是一个简单的整型值的匹配实例。val colorNum = 1val colorStr = colorNum match{ case 1 => "red" case 2 => "green" case 3 => "yellow" case _ => "Not Allowed"}...原创 2020-02-20 14:58:21 · 136 阅读 · 0 评论 -
Scala基础(12)Spark命令参数及独立应用程序
--master这个参数表示当前Spark Shell要连接到哪个master,如果是local[*],就是使用本地模式启动spark-shell,其中中括号内的型号表示需要使用几个CPU核心(core),也就是启动几个线程模拟spark集群。--jars这个参数用于把相关的JAR包添加到CLASSPATH中,如果有多个jar包,可以使用逗号分隔符连接它们。比如,要采用本地模式,在4个...原创 2020-02-20 14:56:40 · 475 阅读 · 0 评论 -
Scala基础(11) 运行基本流程及RDD
Spark和Hadoop的比较MapReduce Spark 数据存储结构:磁盘HDFS文件系统的split 使用内存构建弹性分布式数据集RDD,对数据进行运算和cache 编程范式:Map+Reduce DAG:Transformation+Action 计算中间结果写入磁盘,IO及序列化、反序列化代价大 计算中间结果在内存中维护,存取速度比磁盘高几个...原创 2020-02-19 18:24:05 · 367 阅读 · 0 评论 -
Scala基础(10) 函数式编程
函数式编程实例import java.io.Fileimport scala.io.Sourceobject WordCount{ def mian(args: Array[String]): Unit{ val dirfile = new File("path to files") val files = dirfile.listFiles()...原创 2020-02-18 16:20:16 · 178 阅读 · 0 评论 -
Scala基础(9) 针对集合的操作
列表的遍历val list = List(1,2,3,4,5)for (elem <- list){println(elem)}也可以使用foreach进行遍历val list = List(1,2,3,4,5)list.foreach(elem => println(elem)) // 这是一个匿名函数 (elem:Int) => println(elem)...原创 2020-02-18 15:56:07 · 734 阅读 · 0 评论 -
Scala基础(8)函数定义
函数的类型字面量包括整数字面量、浮点数字字面量、布尔型字面量、字符型字面量、字符串字面量和符号字面量、函数字面量和元组字面量。函数字面量:我们可以像定义变量那样去定义一个函数,由此导致的结果就是函数也会和其他变量一样,开始有“值”在函数式编程中,函数的“类型”和“值”也成为两个分开的概念,函数的“值”,就是“函数字面量”按照大家比较熟悉的定义变量的方式,采用Scala语法来定义一个函...原创 2020-02-18 11:46:02 · 298 阅读 · 0 评论 -
Scala基础(7) 特质(Trait)
特质的定义特质定义使用关键字traittrait CarId{ var id: String def currentId():Int}上面定义了一个Trait,里面包含一个抽象字段id和抽象方法currentid。注意,抽象方法不需要使用abstract关键字,特质中没有方法体的方法,默认就是抽象方法。trait定义好之后,就可以使用extends或with关键...原创 2020-02-14 18:08:59 · 253 阅读 · 0 评论 -
Scala基础(6) 单例对象和伴生对象
单例对象Scala并没有提供Java那样的静态方法或者静态字段,但是,可以采用object关键字实现单例对象,具备和Java静态方法同样的功能。⚠️注意:在Scala中需要对值进行返回可以使用:1. return value;2. 直接写在方法的最后面一行。object Person{ private var lastId = 0 def newPersonId()={...原创 2020-02-14 17:23:09 · 240 阅读 · 0 评论 -
Scala基础(5) 构造器
利用主构造器传递参数class Counter(val name:String, val mode:Int){ private var value = 0 def increment(step:Int):Unit={value += step} def current():Int={value} def info():Unit={printf("Nama:%s...原创 2020-02-14 12:25:35 · 127 阅读 · 0 评论 -
Scala基础(4) 面向对象编程基础
4.1 类类的定义和创建对象最简单的类的定义形式是:class Counter{ // 这里定义类的字段和方法}可以使用new关键字来创建对象new Counter // 或者new Counter()给类增加字段和方法class Counter{ private var value = 0 def increment():Unit = {v...原创 2020-02-13 19:13:47 · 160 阅读 · 0 评论 -
Scala基础(3) 基础语法
3 数据结构3.1 容器(Collection)Scala提供了一套丰富的容器(Collection)包括List、Array、Set和Map等;容器可以分为有序和无序,可变和不可变等不同容器类别。Scala用了三个包来组织容器,分别是scala.collection、scala.collection.mutable(可变容器)和scala.collection.immutable(不...原创 2020-02-12 19:26:38 · 391 阅读 · 0 评论 -
Scala基础(1) 基本语法
(来自于Spark编程基础,厦门大学林子雨老师教学视频)1. scala有两种类型变量:其中val是不可变的,在声明时必须被初始化,而且初始化后便不可再赋值;var是可变的声明时候需要进行初始化,其后还可以进行再赋值。2. 在scala中默认存在:import java.lang._ // 默认导入java.lang包里面所有的东西2.1 声名值和变量(如下结果均一致)...原创 2020-02-11 19:43:08 · 268 阅读 · 0 评论