/** * Uses existing {@link SparkSession} if present, else creates a new one */ public synchronized SparkSession getSparkSession( @NonNull final SparkArgs sparkArgs, final boolean enableHiveSupport) { if (this.sparkSession.isPresent()) { return sparkSession.get(); } final Builder sparkSessionBuilder = SparkSession.builder(); if (enableHiveSupport) { sparkSessionBuilder.enableHiveSupport(); } this.sparkSession = Optional.of(sparkSessionBuilder .config(createSparkConf(sparkArgs)).getOrCreate()); log.info("Created new SparkSession using {}", sparkArgs); updateSparkContext(sparkArgs, this.sparkSession.get().sparkContext()); return this.sparkSession.get(); }