Spark 3000门徒第四课scala模式匹配和类型参数总结

今晚听了王家林老师的Spark 3000门徒系列第四课scala模式匹配和类型参数,总结如下:

模式匹配:
def data(array:Array[String]){
array match{
case Array(a,b,c) => println(a+b+c)
case Array("spark",_*) => //匹配以spark为第一元素的数组
case _ => ...
}
}

课后作业是:

阅读Spark源码 RDD、HadoopRDD、SparkContext、Master、Worker的源码,并分析里面使用的所有的模式匹配和类型参数的内容。

下面是我的一点总结:

T <% Writable: ClassTag
T可以隐身转换为Writable类型
ClassTag在上下文中注入隐式值

对于Manifest Context Bounds
[T : Manifest] 进化为ClassTag了,T:ClassTag  运行时传递完整的类型上下文信息

Seq[Dependency[_]] 相当于Seq[Dependency[T]]

另外有段重要注释:

{{{
* scala> def mkArray[T : ClassTag](elems: T*) = Array[T](elems: _*)
* mkArray: [T](elems: T*)(implicit evidence$1: scala.reflect.ClassTag[T])Array[T]
*
* scala> mkArray(42, 13)
* res0: Array[Int] = Array(42, 13)
*
* scala> mkArray("Japan","Brazil","Germany")
* res1: Array[String] = Array(Japan, Brazil, Germany)
* }}}
*

表明了ClassTag 的隐式转换机制。

时间: 2024-10-08 10:09:11

Spark 3000门徒第四课scala模式匹配和类型参数总结的相关文章

Spark 3000门徒第三课scala高阶函数总结

今晚听了王家林老师3000门徒spark系列课程的第三课,讲述了scala函数,下面写一下心得: 普通函数:def fun1(name:String){println(name)} 函数赋值给变量:val fun1 = functionName _ 匿名函数:val fun2 = (name:String) => prinln(name) 高阶函数:def bigData(func:(String) => Unit, content: String){func(content)} 返回值是函数

Spark 3000门徒第一课随笔

昨晚听了王家林老师的Spark 3000门徒系列课程的第一课,把scala基础过了一遍,对ArrayBuffer有了新的认识: Array本身创建后不可修改ArrayBuffer可修改import scala.collection.mutable.ArrayBufferval arrB = ArrayBuffer[int]()arrB += 10arrB += (11,12,13,5)arrB ++= Array(1,2,3,5)arrB.trimEnd(3) 从尾部截断3个arrB.trimS

Scala实战高手****第13课Scala模式匹配实战和Spark源码鉴赏

package com.dt.spark.scala.bascis class Dataframework case class Computerframework (name:String,popular:Boolean) extends Dataframework case class Storgeframework (name:String,popular:Boolean) extends Dataframework object helloPatternMatch { def main(

Spark源码的角度思考Scala中的模式匹配

学习了从Spark源码的角度思考Scala中的模式匹配,如case class应用,伴生对象中用apply,所以没有new class,直接进行模式匹配,例子如下 Case class RegisterWorker( Id: string, Host: string, Port: int, Cores:int, Memory:int, webUiPort:int, publicAddress:string, Extend DeployMessage{ Utils.checkHost(host,”

Scala模式匹配和类型系统

1.模式匹配比java中的switch case强大很多,除了值,类型,集合等进行匹配,最常见的Case class进行匹配,Master.scala有大量的模式匹配. Case "_"表示不满足上面的所有情况的体验,举个例子: def bigdata(data: String){ data match{ case "Spack"=>println("WOW!!!") case "Hadoop"=>println(

scala模式匹配下的提取器动手构造实战

学习了scala模式匹配下的提取器动手构造实战,提取器的名称:>,提取器方法unapply,返回最后一个元素,和最后一个元素以前的若干元素,匹配最后一个元素是9,前面的是8,例子下: Object  :>{ Def  unapply[A](List:List[A])={ Some((list.init,list.last)) } } Object Extractor_Advanced{ Def main(args:Array[String]){ (1 to 9).toList match{ c

第四课 文件系统(下)

====================第四课 文件系统(下)==================== 一.sync/fsync/fdatasync------------------------ 1. 大多数磁盘I/O都通过缓冲进行, 写入文件其实只是写入缓冲区,直到缓冲区满, 才将其排入写队列. 2. 延迟写降低了写操作的次数,提高了写操作的效率, 但可能导致磁盘文件与缓冲区数据不同步. 3. sync/fsync/fdatasync用于强制磁盘文件与缓冲区同步. 4. sync将所有被修改

【连载】创业能力培训第四课总结

创业能力培训第四课总结 以一个故事开头: 老师问:3加4等于多少? 学生答:3加4等于8 老师说了3句话: 1.很好! 2.离答案很接近了哦! 3.还有没有人有别的答案? 表扬,保持其积极性. 具备什么样的条件才能创业 一.明确的创业动机和目标 1.人无我有 2.人有我优 3.人优我特 二.熟悉所要创业的领域(行业.市场.客户等) 三.一定的创业资源(部分即可) 四.一定的知识技能 五.拥有创业精神 创业3要素: 1.机会 2.资源 3.团队 团队: 1.才能互补 2.责任共担 3.共同的创业目

微积分重点 第一课至第四课

1.微积分是关于两个函数间关系的学问 例如, 距离与速度的关系  f(t)  --- df/dt 高度与斜率的关系  y(x)  ---- dy/dx 函数1--->函数2:   求斜率 函数2--->函数1:   求面积,乘以自变量 两条曲线不同,但是包含了相同的信息 函数2表示了函数1在某一瞬间的变化率 2.导数的总览和计算 三个重要的基本函数:幂函数 三角函数 指数函数 求导过程: Δy/Δx 无限逼近取极限 就得到了 dy/dx sinx 在零点处斜率逼近1, 在pi/2处斜率为零,