昨晚听了王家林老师3000门徒spark系列课程的第二课,讲述了scala面向对象知识,并且带着过了一遍Spark核心类:SparkContent,RDD的代码,下面写一下心得:
RDD是抽象类,实现了Serializable和Logging接口,有很多类继承了RDD类来实现不同功能的RDD。
SparkContent默认构造器传入config:SparkConf 实现了Logging和ExecutorAllocationClient接口.
类默认构造器会执行类中没有在成员函数中的所有代码。
Object 所有成员都是静态的,一般用来放全局唯一常量和工具方法,有默认的无参数的构造函数,只第一次调用会执行静态语句,第二次及其以后不会执行这些静态语句
伴生类和伴生对象必须在一个文件中
伴生类的伴生对象的apply是构造对象的工厂方法,例如:抽象Graph Object的apply方法调用了GraphImpl Object的apply方法来构造对象
类加final,类不能被继承
属性和方法加final,不能被覆盖
建议使用override关键字,一般覆盖方法,覆盖属性情况不多
另外SparkContent,RDD的代码中有很多注解,Scala提供了相应的注解。
@volatile注解标记为易失的(不必序列化);@transient注解将字段标记为瞬态的