关于spark2.x后的SparkSession

Apache Spark2.0 引入了SparkSession,其为用户提供了一个统一的切入点来使用Spark的各项功能,并且允许用户通过它调用DataFrame和Dataset相关API来编写Spark程序。最重要的是,它减少了用户需要了解的一些概念,使得我们可以很容易地与Spark交互,在SparkSession中封装了SparkContext,SparkConf等,为了解决用户可能对SparkContext的混乱(不知道当时使用的哪一个Context),使用的时候就和SparkContext差不多;

val spark=SparkSession.builder().master("local").getOrCreate().config("key","value") //工厂创造

spark.read.textFile(Path:String),除了textFile,还有load,csv,json,text,format,jdbc等读取方法;封装了;很是方便的;

sparksession中部分源码如下:

@InterfaceStability.Stable
class Builder extends Logging {

  private[this] val options = new scala.collection.mutable.HashMap[String, String]

  private[this] var userSuppliedContext: Option[SparkContext] = None

  private[spark] def sparkContext(sparkContext: SparkContext): Builder = synchronized {
    userSuppliedContext = Option(sparkContext)
    this
  }

val sparkContext = userSuppliedContext.getOrElse {
  // set app name if not given
  val randomAppName = java.util.UUID.randomUUID().toString
  val sparkConf = new SparkConf()
  options.foreach { case (k, v) => sparkConf.set(k, v) }
  if (!sparkConf.contains("spark.app.name")) {
    sparkConf.setAppName(randomAppName)
  }
  val sc = SparkContext.getOrCreate(sparkConf)
  // maybe this is an existing SparkContext, update its SparkConf which maybe used
  // by SparkSession

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值