spark2.2在使用的时候使用的是SparkSession,这个SparkSession创建的时候很明显的使用了创建者模式。通过观察源代码,简单的模拟了下,可以当作以后编码风格的参考:

官方使用

import org.apache.spark.sql.SparkSession

val spark = SparkSession

.builder()

.appName("Spark SQL basic example")

.config("spark.some.config.option", "some-value")

.getOrCreate()

// For implicit conversions like converting RDDs to DataFrames

import spark.implicits._

自己写的小例子,模拟一下:

package xingoo.core

object 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-->1

b-->2

创建成功!

查看原文