1. apply语法
FileShuffleBlockManager中定义的类ShuffleFileGroup,定义:
private class ShuffleFileGroup(val shuffleId: Int, val fileId: Int, val files: Array[File]) { ... def apply(bucketId: Int) = files(bucketId) ... }
那么当我们新建了ShuffleFileGroup对象后,
val fileGroup = new ShuffleFileGroup(shuffleId, fileId, files)
执行如下如下操作 val file = fileGroup(0),那么它自动调用ShuffleFileGroup类的apply方法,这里返回的是files这个File数组的第一个文件
Scala allows classes to define a special function named apply that is called when we treat an object as if it were a function, so head(5) is the same thing as head.apply(5). 这里head是个Array数组对象
In Scala, apply methods have some special syntactic sugar that allows us to call them without having to type them out explicitly; for example, these two lines do exactly the same thing:
val nastats = NAStatCounter.apply(17.29)
val nastats = NAStatCounter(17.29)
NAStatCounter这里是NAStatCounter类的伴生对象,在半生对象上调用apply方法,可以用于创建类对象
2.二维数组
代码来自于DiskBlockManager.scala
fill操作是产生一个长度为第一个参数的数组,同时每个元素使用第二个参数进行填充,这里第二个参数是个数组,因此这样就定义了一个二维数组
private val subDirs = Array.fill(localDirs.length)(new Array[File](subDirsPerLocalDir))
二维数组的两个维度分别用()()表示,这跟Java的二维数据a[0][0]道理一样,只不过Scala使用a(0)(0)来对于第一个元素
var subDir = subDirs(dirId)(subDirId)
3. for嵌套循环
忘记了在Spark的什么地方看到的这个语法现象,在scala终端上试了下才发现原来是嵌套循环
scala> val a1 = List(1,2,3) a1: List[Int] = List(1, 2, 3) scala> val a2 = List(4,5,6) a2: List[Int] = List(4, 5, 6)
scala> for(s1 <- a1; s2 <- a2) {println("s1=" + s1 + ",s2=" + s2)} s1=1,s2=4 s1=1,s2=5 s1=1,s2=6 s1=2,s2=4 s1=2,s2=5 s1=2,s2=6 s1=3,s2=4 s1=3,s2=5 s1=3,s2=6
可见这是个循环遍历a1和a2的操作,同时由输出结果可以看到,s1<-a1是外层循环,s2<-a2是内层循环
相关推荐
本资源提供了一套基于Scala语言的Apache Spark源代码注释与翻译的设计源码,包含8170个文件。其中包括2245个Questionnaire文件,1297个Scala源代码文件,249个Java源代码文件,154个TXT文档,90个Python脚本文件,56...
Scala程序设计 例子 源代码 Scala程序设计 例子 源代码 Scala程序设计 例子 源代码
Scala和Spark大数据分析函数式编程、数据流和机器学习
scala的小例子一个简单的例子有一点小帮助
scala是一种基于JVM的面向对象的函数编程,scala编程相对于java而言代码整洁、开发效率更高。 其中scala优点主要有: 1:面向对象,可以定义class,通过new调用实例对象使用。 2:兼容java,在scala中可以直接调用...
此代码包含spark-core代码,spark-sql代码以及spark-streaming代码
scala sdk-2.12 与spark版本冲突,spark-1.6最高支持scala sdk-2.10.x版本
本资源收集了scala与大数据spark的基础的学习笔记,有兴趣的同学可以下载学习
其中Q文件2245个,Scala源代码文件1951个,Java源代码文件410个,文本文件162个,Python源代码文件150个,Markdown文档72个,R语言文件45个,XML配置文件40个,Shell脚本文件39个,JSON配置文件38个。该项目是Apache...
本资源提供了一套基于Scala的Apache Spark大数据处理框架的设计源码,包含12359个文件,其中包括3473个Scala源代码文件,1559个Q文件,1110个Java源代码文件,以及354个SQL文件。此外,还包括333个Python脚本文件,...
scala和spark的安装和配置,以及启动spark,分发节点。
Scala and Spark for Big Data Analytics by Md. Rezaul Karim English | 25 July 2017 | ISBN: 1785280848 | ASIN: B072J4L8FQ | 898 Pages | AZW3 | 20.56 MB Harness the power of Scala to program Spark and ...
本源码提供了一个基于Scala的Apache Spark流感病毒数据分析设计与实现源码。项目包含99个文件,其中包括40个Scala文件、24个CRC文件、20个Parquet文件、9个XML文件、2个Gitignore文件、1个Markdown文档、1个output/...
本项目是一个基于Scala语言开发的Apache Spark大数据处理项目,包含13811个文件,主要文件类型包括Scala源代码、查询文件、文本文件、Java源代码、SQL数据库文件、Python脚本、Markdown文档、输出文件、R语言文件、...
scala与spark文档合集,有好多本,包括快学Scala,scala与spark文档合集
原始用的jetty做的http接口,最近有时间,研究了下spring boot + scala + spark做大数据计算
这个文件是用来在Idea中用于整合Scala实现Spark代码编写的pom配置文件. 内置 JDK规定, Spark-core, SparkSQL, mysql依赖的jar包,SparkStreaming, SparkStreaming + Kafka, 向kafka 生产数据需要包, 连接 Redis 需要...
学习Spark技术相关文档,包括Scala由浅入深,及Spark详细介绍实践等文档,主要都是文字版,对大数据感兴趣的应该不会失望,包含Scala in Action; Learning Spark; Scala in Depth;Scala for the Impatient;Spark快速...
scala design patterns源书代码,是scala design patterns英文原版的配套代码