org.apache.hadoop.hive.ql.exec.spark.session.SparkSessionManager Maven / Gradle / Ivy
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.hive.ql.exec.spark.session;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.metadata.HiveException;
/**
* Defines interface for managing multiple SparkSessions in Hive when multiple users
* are executing queries simultaneously on Spark execution engine.
*/
public interface SparkSessionManager {
/**
* Initialize based on given configuration.
*
* @param hiveConf
*/
void setup(HiveConf hiveConf) throws HiveException;
/**
* Get a valid SparkSession. First try to check if existing session is reusable
* based on the given conf. If not release existingSession and return
* a new session based on session manager criteria and conf.
*
* @param existingSession Existing session (can be null)
* @param conf
* @param doOpen Should the session be opened before returning?
* @return SparkSession
*/
SparkSession getSession(SparkSession existingSession, HiveConf conf,
boolean doOpen) throws HiveException;
/**
* Return the given sparkSession to pool. This is used when the client
* still holds references to session and may want to reuse it in future.
* When client wants to reuse the session, it should pass the it getSession method.
*/
void returnSession(SparkSession sparkSession) throws HiveException;
/**
* Close the given session and return it to pool. This is used when the client
* no longer needs a SparkSession.
*/
void closeSession(SparkSession sparkSession) throws HiveException;
/**
* Shutdown the session manager. Also closing up SparkSessions in pool.
*/
void shutdown();
}