`

newExecuteStatementOperation single session

 
阅读更多
  var udfNotInited = true


  override def newExecuteStatementOperation(
      parentSession: HiveSession,
      statement: String,
      confOverlay: JMap[String, String],
      async: Boolean): ExecuteStatementOperation = synchronized {
    val sqlContext = sessionToContexts.get(parentSession.getSessionHandle)
    require(sqlContext != null, s"Session handle: ${parentSession.getSessionHandle} has not been" +
      s" initialized or had already closed.")

   if(udfNotInited) {
     val configFilePath = sqlContext.sparkContext.conf.getOption("spark.app.confpath")
       .getOrElse("/sparklib/conf/udf.config")
     println(s"openSession  configFilePath: $configFilePath ")
     UdfLoadUtils.udfRegister(configFilePath, sqlContext.sparkSession)
     udfNotInited = false
   }



    val conf = sqlContext.sessionState.conf
    val runInBackground = async && conf.getConf(HiveUtils.HIVE_THRIFT_SERVER_ASYNC)
    val operation = new SparkExecuteStatementOperation(parentSession, statement, confOverlay,
      runInBackground)(sqlContext, sessionToActivePool)
    handleToOperation.put(operation.getHandle, operation)
    logDebug(s"Created Operation for $statement with session=$parentSession, " +
      s"runInBackground=$runInBackground")
    operation
  }



org.apache.spark.sql.hive.thriftserver.SparkSQLSessionManager#openSession


override def openSession(
                            protocol: TProtocolVersion,
                            username: String,
                            passwd: String,
                            ipAddress: String,
                            sessionConf: java.util.Map[String, String],
                            withImpersonation: Boolean,
                            delegationToken: String): SessionHandle = {
    val sessionHandle =
      super.openSession(protocol, username, passwd, ipAddress, sessionConf, withImpersonation,
        delegationToken)
    val session = super.getSession(sessionHandle)
    HiveThriftServer2.listener.onSessionCreated(
      session.getIpAddress, sessionHandle.getSessionId.toString, session.getUsername)
  //  println(s" open session : single ${sqlContext.conf.hiveThriftServerSingleSession}  ")
    val ctx = sqlContext
//    val ctx = if (sqlContext.conf.hiveThriftServerSingleSession) {
//      sqlContext
//    } else {
//       sqlContext.newSession()
//   }
//    if (!sqlContext.conf.hiveThriftServerSingleSession) {
//      val configFilePath = ctx.sparkContext.conf.getOption("spark.app.confpath")
//        .getOrElse("/sparklib/conf/udf.config")
//      println(s"openSession  configFilePath: $configFilePath ")
//      UdfLoadUtils.udfRegister(configFilePath, ctx.sparkSession)
//    }
    ctx.setConf("spark.sql.hive.version", HiveUtils.hiveExecutionVersion)
    if (sessionConf != null && sessionConf.containsKey("use:database")) {
      ctx.sql(s"use ${sessionConf.get("use:database")}")
    }
    sparkSqlOperationManager.sessionToContexts.put(sessionHandle, ctx)
    sessionHandle
  }
分享到:
评论

相关推荐

    single-session-middleware

    安装$ npm i single-session-middleware -DNode.js import express from 'express'import singleSession from 'single-session-middleware'import proxy from 'http-proxy-middleware'const app = express ( )app ....

    wcf 通信模型 percall persession single 很好的例子

    本示例主要涵盖了三种通信模型:PerCall、PerSession和Single。 **1. PerCall模型** PerCall模型是最常见的服务实例化策略。在每次客户端调用服务操作时,都会创建一个新的服务实例来处理该请求,然后在操作完成后...

    过滤器对于session周期的控制

    - `singleSession`: 设置为`true`表示在整个请求过程中只使用一个Session实例。 - `sessionFactoryBeanName`: 指定`SessionFactory`的名称,通常与Spring配置文件中定义的`SessionFactory` bean名称相同。 3. **...

    c#实现cookie和session的登陆实例

    这时可以使用Cookie的`Domain`属性设置允许访问的域,或者使用单点登录(Single Sign-On, SSO)技术。 5. **安全考虑**: - 不要在Cookie或Session中存储敏感信息,如明文密码。最好只存储一个可以验证身份的标识...

    spring-session实现session共享

    Spring-Session作为一个优秀的解决方案,它结合了Redis等分布式存储,有效地解决了这个问题,实现了跨域和多应用之间的Session统一存储,进而支持单点登录(Single Sign-On, SSO)。 Spring-Session是Spring社区...

    JSP实验-购物车(用session实现)

    **JSP实验-购物车(用session实现)** 在Web开发中,购物车是一个常见的功能,它允许用户选择商品并暂时存储,直到他们准备结账。在这个实验中,我们将使用JavaServer Pages (JSP) 技术来创建一个简单的购物车,主要...

    跨域共享session (实现http跳转https 共享session)

    但是,为了提供更好的用户体验,特别是在单点登录(Single Sign-On, SSO)场景下,跨域共享session变得非常重要。 **一、跨域共享session原理** 1. **JSONP(JSON with Padding)**:JSONP是一种早期的跨域解决方案...

    学习Spring-Session+Redis实现session共享

    在分布式系统中,单点登录(Single Sign-On,简称SSO)成为一种常见的需求。为了实现这一目标,就需要解决不同服务器间Session共享的问题。Spring-Session正是为此而设计的一个框架,它提供了一种机制来存储用户的...

    处理session跨域几种方案

    5. **单点登录(Single Sign-On, SSO)**: - 实施SSO系统,用户在登录任一关联网站后,其他关联网站无需再次登录即可访问。这通常涉及到中央认证服务器,如CAS(Central Authentication Service)或OAuth2。 在...

    tomcat7+redis单点 session共享jar

    **单点登录(Single Sign-On, SSO)** 是一种允许用户在一个认证域内登录一次,然后在整个域内访问其他应用而无需再次登录的机制。在分布式Web应用中,session共享是实现SSO的关键技术。 **Session共享** 是指在多...

    asp.net 跨子域共享SESSION

    在实际应用中,通常会结合单点登录(Single Sign-On, SSO)系统来实现跨子域共享Session。SSO允许用户在一个子域登录后,其他子域无需再次登录即可访问。实现SSO时,Session共享是关键组成部分,通常会结合Cookie或...

    基于session的单点登陆

    单点登录(Single Sign-On,简称SSO)是一种允许用户在多个相互关联的应用系统中使用一个身份进行登录的技术。它简化了用户管理和权限控制,提高了用户体验。在这个项目中,我们采用基于Session的实现方式,结合JDBC...

    关于session的详细解释.pdf

    在多应用环境中,有时需要实现跨应用的Session共享,例如单点登录(Single Sign-On,SSO)。这可以通过集中式Session存储服务或基于标准协议(如OAuth、SAML)的解决方案来实现。 **总结** Session机制是现代Web...

    laravel实现共享session案例.docx

    在 Laravel 框架中,实现跨域或者父子网站之间的 Session 共享是一个常见的需求,尤其是在构建单点登录(Single Sign-On, SSO)系统时。本案例主要讲解如何通过 Redis 作为中间件来实现这一功能。以下是详细的步骤和...

    CEC 2020 Special Session and Competition on Single Objective

    Problem Definitions and Evaluation Criteria for the CEC 2020 Special Session and Competition on Single Objective Bound Constrained Numerical Optimization 这篇文献找了好久。。

    nginx+redis实现session共享

    为了实现单点登录(Single Sign-On, SSO)以及跨应用的session共享,我们可以结合使用Nginx作为反向代理服务器,以及Redis作为持久化内存数据库来存储session数据。下面将详细解释这个解决方案的各个方面。 首先,...

    single sign on流程图

    ### Single Sign-On (SSO) 流程解析 #### 单点登录(SSO)概念介绍 单点登录(Single Sign-On,简称 SSO)是一种身份验证机制,它允许用户通过一次登录过程,即可访问所有相互信任的应用程序和服务,而无需在每个应用...

    meteor-presence-single-session:检测同一用户的多个会话

    将所有具有当前userId存在条目发布到SingleSession.MySessions (Mongo 集合)。 提供响应函数SingleSession.isSingleSession()如果当前用户有多个不同loginToken的会话,它返回false 。 (例如,不同的浏览器或...

    Tomcat 同一服务器上 不同web项目共享session的

    3. **使用单点登录(Single Sign-On, SSO)**:SSO允许用户在一个应用中登录后,无须再次登录即可访问其他应用。Tomcat内置了JASIG CAS(Central Authentication Service)支持,可以实现这个功能。SSO不仅解决了...

    cookie+session实现的单点登录案例

    单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。在这个案例中,我们将探讨如何利用Cookie和Session来实现SSO,同时结合第三方社交登录,...

Global site tag (gtag.js) - Google Analytics