博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark小课堂Week5 Scala初探
阅读量:6903 次
发布时间:2019-06-27

本文共 1493 字,大约阅读时间需要 4 分钟。

Spark小课堂Week5 Scala初探

Scala是java威力加强版。

对Java的改进

这里会结合StreamingContext.scala这个代码说明下对Java的改进方面。

  • 方便测试方式,增加了可以指定位置的作用域。
  • 成员变量声明,构造方法,get、set方法一体化。
  • []表示泛型,不是<>
class StreamingContext private[streaming] (
    sc_ : SparkContext,    
    cp_ : Checkpoint,
        batchDur_ : Duration
    ) extends Logging
  • case声明Java Bean,省掉new的操作
private[scheduler] sealed trait JobSchedulerEvent
private[scheduler] case class JobStarted(job: Job, startTime: Long) extends JobSchedulerEvent
  • 用val控制声明周期,防止他人重新构造,已将所有基本类型对象化,所以val内容是可变的
  • 提供类型推断,对于编译器可推断类型无需定义
private[streaming] val isCheckpointPresent = (cp_ != null)
  • 会自动根据分支的最后一个逻辑返回,不需要return,可以表达式来定义逻辑
private[streaming] var checkpointDir: String = {
  if (isCheckpointPresent) {  
    sc.setCheckpointDir(cp_.checkpointDir)
     cp_.checkpointDir
   } else {
     null
   }  
}
  • 用None替代null,由定义方来定义是否可能空指针情况,降低调用方的开发难度
private[streaming] val uiTab: Option[StreamingTab] =
  if (conf.getBoolean("spark.ui.enabled", true)) {
    Some(new StreamingTab(this))
  } else {
    None
  }

作业

题目

在RDD.scala中没有sortByKey方法,为什么可以调用。

解析

Scala中有一个非常强大的隐式转换功能,可以实现方法的动态注入。

以下是范例代码。可以看到通过隐式转换方法,可以动态给Person类添加toCode这个方法。

在Spark源码中到处使用。

class Person(val name:String)class Engineer(val name:String,val salary:Double){    def code = println("coding:" + name)}def toCode(p:Person){    p.code}implicit def personToEngineer(p:Person) : Engineer= {    new Engineer(p.name,0);}new Person("aa").code

关于

小课堂是在公司进行内部交流的一系列主题,偏基础,但是比较零散,持续更新中。

转载于:https://www.cnblogs.com/dt-zhw/p/5700788.html

你可能感兴趣的文章
Android开发基础知识
查看>>
作为Web开发人员,我为什么喜欢Google Chrome浏览器
查看>>
http请求的request和response
查看>>
eclipse中添加插件
查看>>
[CodeForce455A]Boredom
查看>>
Research
查看>>
vue实现app页面切换效果
查看>>
修改phpMyAdmin 导入MySQL数据库文件大小限制
查看>>
写了一个关于简单的Excel表格导入sqlserver 2013-08-04 15:23 391人阅读 评论(...
查看>>
[ACM - 图论]还是畅通工程(最小生成树+并查集)
查看>>
码农也来关注下经济问题<美元加息>对我们的影响
查看>>
自娱自乐的小题目(1)
查看>>
Pinyin4j的基本用法 获得拼音的声调
查看>>
手动安装Firefox Linux
查看>>
设计一个一百亿的计算器
查看>>
Linux自动执行sh脚本
查看>>
普通rgb转换为16进制
查看>>
MCU多串口收发
查看>>
Linux用户及用户组管理
查看>>
py 的 第 25 天
查看>>