in thriftserver/server/src/main/scala/org/apache/livy/thriftserver/LivyThriftSessionManager.scala [594:647]
private def processSessionConf(
sessionConf: JMap[String, String],
supportUseDatabase: Boolean): (List[String], CreateInteractiveRequest, Option[Int]) = {
if (null != sessionConf && !sessionConf.isEmpty) {
val statements = new mutable.ListBuffer[String]
val extraLivyConf = new mutable.ListBuffer[(String, String)]
val createInteractiveRequest = new CreateInteractiveRequest
sessionConf.asScala.foreach {
case (key, value) =>
key match {
case v if v.startsWith("use:") && supportUseDatabase =>
statements += s"use $value"
// Process session configs for Livy session creation request
case "set:hiveconf:livy.session.driverMemory" =>
createInteractiveRequest.driverMemory = Some(value)
case "set:hiveconf:livy.session.driverCores" =>
createInteractiveRequest.driverCores = convertConfValueToInt(key, value)
case "set:hiveconf:livy.session.executorMemory" =>
createInteractiveRequest.executorMemory = Some(value)
case "set:hiveconf:livy.session.executorCores" =>
createInteractiveRequest.executorCores = convertConfValueToInt(key, value)
case "set:hiveconf:livy.session.numExecutors" =>
createInteractiveRequest.numExecutors = convertConfValueToInt(key, value)
case "set:hiveconf:livy.session.queue" =>
createInteractiveRequest.queue = Some(value)
case "set:hiveconf:livy.session.name" =>
createInteractiveRequest.name = Some(value)
case "set:hiveconf:livy.session.heartbeatTimeoutInSecond" =>
convertConfValueToInt(key, value).foreach { heartbeatTimeoutInSecond =>
createInteractiveRequest.heartbeatTimeoutInSecond = heartbeatTimeoutInSecond
}
case livySessionConfRegexp(livyConfKey) => extraLivyConf += (livyConfKey -> value)
// set the hivevars specified by the user
case hiveVarPattern(confKey) => statements += s"set hivevar:${confKey.trim}=$value"
case _ if key == livySessionIdConfigKey => // Ignore it, we handle it later
case _ =>
info(s"Ignoring key: $key = '$value'")
}
}
createInteractiveRequest.conf = extraLivyConf.toMap
val sessionId = Option(sessionConf.get(livySessionIdConfigKey)).flatMap { id =>
val res = Try(id.toInt)
if (res.isFailure) {
warn(s"Ignoring $livySessionIdConfigKey=$id as it is not an int.")
None
} else {
Some(res.get)
}
}
(statements.toList, createInteractiveRequest, sessionId)
} else {
(List(), new CreateInteractiveRequest, None)
}
}