spark2.2在使用的时候使用的是SparkSession,这个SparkSession创建的时候很明显的使用了创建者模式。通过观察源代码,简单的模拟了下,可以当作以后编码风格的参考:
官方使用
import org.apache.spark.sql.SparkSessionval spark = SparkSession .builder() .appName("Spark SQL basic example") .config("spark.some.config.option", "some-value") .getOrCreate()// For implicit conversions like converting RDDs to DataFramesimport spark.implicits._
自己写的小例子,模拟一下:
package xingoo.coreobject SparkSessionBuilderExample { def main(args: Array[String]): Unit = { SparkSession .builder() .config("a","1") .config("b","2") .getOrCreate() }}object SparkSession{ // 创建者模式 class Builder{ def config(key:String, value:String):Builder = { println(key+"-->"+value) this } def getOrCreate():Unit = { println("创建成功!") } } def builder(): Builder = new Builder}
很好的风格!
可以得到输出:
a-->1b-->2创建成功!