大数据Spark “蘑菇云”行动前传第20课:Scala提取器、注解深度实战详解及Spark源码鉴赏大数据Spark “蘑菇云”行动前传第20课:Scala提取器、注解深度实战详解及Spark源码鉴
2016-08-10 21:22
741 查看
大数据Spark “蘑菇云”行动前传第20课:Scala提取器、注解深度实战详解及Spark源码鉴赏大数据Spark “蘑菇云”行动前传第20课:Scala提取器、注解深度实战详解及Spark源码鉴赏
1 Spark源码提取器、注解
2 Scala提取器、注解深度
@transient 无需序列化
@volatile 线程刷新变量,简单理解为F5刷新,线程本地变量值刷新到全局变量
@varargs 报警
@throws(classOf[IOException]) 扔出异常
这里是个面试题,模式匹配时候一定会用的到是什么方法呢?答 unapply
package com.dt.spark.scala.bascis
@DTCoder(name="scala",salary=1000)
case class Person1(name:String,age:Int){
val content =name
}
class DTCoder(val name:String,val salary:Int) extends annotation.Annotation
object DTCoder{
def apply(name:String,salary:Int) ={
println("DTCoder apply methode invoked !!!")
new DTCoder(name,salary)
}
def unapply(information:DTCoder)= {
Some(( information.name,information.salary ))
/* def unapply(information:String)= {
Some((information.substring(0,information.indexOf(" ")),information.substring(0,information.indexOf(" ")+1)))
}*/
}
}
object HelloExtractor {
def main(args: Array[String]): Unit = {
val person =Person1.apply("spark",6)
val Person1(name,age)=person
println(name+ " : " +age)
person match {
case Person1(name,age)=>println("wow "+name+ " : " +age)
}
val dtcoder = DTCoder("hadoop",200)
val DTCoder(dtname1,dtsalary1) =dtcoder
println("dtname1 "+dtname1+ " : " +dtsalary1)
//val DTCoder(dtname,dtsalary) = "spark 100"
// println("dtname "+dtname+ " : " +dtsalary)
}
}
运行结果
spark : 6
wow spark : 6
DTCoder apply methode invoked !!!
dtname1 hadoop : 200
1 Spark源码提取器、注解
2 Scala提取器、注解深度
@transient 无需序列化
@volatile 线程刷新变量,简单理解为F5刷新,线程本地变量值刷新到全局变量
@varargs 报警
@throws(classOf[IOException]) 扔出异常
这里是个面试题,模式匹配时候一定会用的到是什么方法呢?答 unapply
package com.dt.spark.scala.bascis
@DTCoder(name="scala",salary=1000)
case class Person1(name:String,age:Int){
val content =name
}
class DTCoder(val name:String,val salary:Int) extends annotation.Annotation
object DTCoder{
def apply(name:String,salary:Int) ={
println("DTCoder apply methode invoked !!!")
new DTCoder(name,salary)
}
def unapply(information:DTCoder)= {
Some(( information.name,information.salary ))
/* def unapply(information:String)= {
Some((information.substring(0,information.indexOf(" ")),information.substring(0,information.indexOf(" ")+1)))
}*/
}
}
object HelloExtractor {
def main(args: Array[String]): Unit = {
val person =Person1.apply("spark",6)
val Person1(name,age)=person
println(name+ " : " +age)
person match {
case Person1(name,age)=>println("wow "+name+ " : " +age)
}
val dtcoder = DTCoder("hadoop",200)
val DTCoder(dtname1,dtsalary1) =dtcoder
println("dtname1 "+dtname1+ " : " +dtsalary1)
//val DTCoder(dtname,dtsalary) = "spark 100"
// println("dtname "+dtname+ " : " +dtsalary)
}
}
运行结果
spark : 6
wow spark : 6
DTCoder apply methode invoked !!!
dtname1 hadoop : 200
相关文章推荐
- 大数据Spark “蘑菇云”行动前传第22课:Scala集合和高级函数操作实战及Spark源码鉴赏.
- 大数据Spark “蘑菇云”行动前传第16课:Scala implicits编程彻底实战及Spark源码鉴赏
- 大数据Spark “蘑菇云”行动前传第13课Scala模式匹配实战和Spark源码鉴赏
- 大数据Spark “蘑菇云”行动前传第14课Scala集合上的函数式编程实战及Spark源码鉴赏
- 大数据Spark “蘑菇云”行动前传第4课:零基础彻底实战Scala控制结构及Spark源码解析
- 大数据Spark “蘑菇云”行动前传第7课:零基础实战Scala面向对象编程及Spark源码解析
- 大数据Spark “蘑菇云”行动前传第23课:Scala外部命令和正则表达式及Spark源码鉴赏
- 大数据Spark “蘑菇云”行动前传第19课:Scala的包、继承覆写及Spark源码鉴赏
- 大数据Spark “蘑菇云”行动前传第3课:在IDE下开发第一个Scala程序透彻解析及Scala控制结构详解实战
- 大数据Spark“蘑菇云”行动-第11课:Scala面向接口彻底实战和Spark源码鉴赏
- 大数据Spark“蘑菇云”行动-第14课Scala集合上的函数式编程实战及Spark源码鉴赏
- 大数据Spark “蘑菇云”行动前传18课:Scala偏函数、异常、Lazy值编码实战及Spark源码鉴赏
- 大数据Spark “蘑菇云”行动前传第2课:Scala零基础实战入门的第一堂课及如何成为Scala高手
- 大数据Spark “蘑菇云”行动前传第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码解析
- 大数据Spark “蘑菇云”行动前传第10课:Scala继承彻底实战和Spark源码鉴赏.
- 大数据Spark “蘑菇云”行动第40课:Spark编程实战之aggregateByKey、reduceByKey、groupByKey、sortByKey深度解密
- 大数据Spark “蘑菇云”行动第41课:Spark编程实战之join、cogroup、cartesian深度解密
- 大数据Spark “蘑菇云”行动Hadoop实战速成之路第29课:Hadoop架构详解及Hadoop集群搭建、配置和测试实战
- 大数据Spark“蘑菇云”行动-第10课:Scala继承彻底实战和Spark源码鉴赏
- 大数据Spark “蘑菇云”行动第79课:Spark GraphX 代码实战及源码剖析