scala
cyony
遇见更好的自己
展开
-
Spark Streaming 流计算状态管理
spark流计算的数据是以窗口的形式,源源不断的流过来的。如果每个窗口之间的数据都有联系的话,那么就需要对前一个窗口的数据做状态管理。spark有提供了两种模型来达到这样的功能,一个是updateStateByKey,另一个是mapWithState ,后者属于Spark1.6之后的版本特性,性能是前者的数十倍。 updateStateByKey 通过源码查看发现,这个模型的核...原创 2018-03-22 15:27:15 · 3747 阅读 · 0 评论 -
Scala隐式转换几种使用场景
Scala提供的隐式转换的特性的作用,简单说就是:当Scala编译器进行类型匹配时,如果找不到合适的类型,那么隐式转换会让编译器在作用范围内自动推导出合适的类型,在代码重构设计上,可以避免冗余的代码,使得代码非常优雅。 使用场景一:隐式参数scala> def sayHello(age: Int)(implicit name: String) = println("my na...原创 2018-03-19 20:40:04 · 3166 阅读 · 0 评论 -
Scala的高阶函数使用总结
函数在Scala语言中有着举足轻重的地位,它和类,变量同样属于一等公民的地位,函数可以脱离类而独立存在,同时自己也可以作为参数传递给其他函数。 匿名函数scala> val sayHello = (name: String) => println("my name is:" + name) sayHello: String => Unit = <functio...原创 2018-03-20 12:56:22 · 3274 阅读 · 0 评论 -
利用伴生对象构建Scala单例
在Scala语法中,并没有静态成员,所以并不能像Java一样构建单例。但是他拥有伴生对象的特性,所以可以利用这一点来达到同样的目的。 伴生对象类型为object,名称和class保持一致,那么这个object就是此class的伴生对象。class和object之间可以互相访问各自的成员变量,且object内的成员变量都是静态的。下面贴一下代码,具体如何实现。class Student...原创 2018-03-21 10:54:38 · 336 阅读 · 0 评论