zoukankan      html  css  js  c++  java
  • 源码中的哲学——通过构建者模式创建SparkSession

    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
    创建成功!
    
  • 相关阅读:
    zabbix验证微信
    free
    有名管道和无名管道
    shell实现并发控制
    TCP/IP协议簇 端口 三次握手 四次挥手 11种状态集
    自动化运维
    JSON对象(自定义对象)
    对象中属性的遍历、删除与成员方法
    对象间的赋值操作
    自定义类
  • 原文地址:https://www.cnblogs.com/xing901022/p/8043496.html
Copyright © 2011-2022 走看看