
# 配置多并发客户端连接JDBCServer
#### 操作场景
JDBCServer支持多用户多并发接入，但当并发任务数量较高的时候，默认的JDBCServer配置将无法支持，因此需要进行优化来支持该场景。
#### 操作步骤
1. 设置JDBCServer的公平调度策略。
   Spark默认使用FIFO（First In First Out）的调度策略，但对于多并发的场景，使用FIFO策略容易导致短任务执行失败。因此在多并发的场景下，需要使用公平调度策略，防止任务执行失败。
   1. 在Spark中设置公平调度，具体请参考<https://archive.apache.org/dist/spark/docs/3.1.1/job-scheduling.html#scheduling-within-an-application>。
   
   2. 在JDBC客户端中设置公平调度。
      1. 在BeeLine命令行客户端或者JDBC自定义代码中，执行如下语句，其中PoolName是公平调度的某一个调度池。
         ```
         SET spark.sql.thriftserver.scheduler.pool=PoolName;
         ```
         
      
      2. 执行相应的SQL命令，Spark任务将会在上面的调度池中运行。
       
     
2. 设置BroadCastHashJoin的超时时间。
   BroadCastHashJoin有超时参数，一旦超过预设的时间，该查询任务直接失败，在多并发场景下，由于计算任务抢占资源，可能会导致BroadCastHashJoin的Spark任务无法执行，导致超时出现。因此需要在JDBCServer的"spark-defaults.conf"配置文件中调整超时时间。
   表1参数描述 
   | **参数**                     | **描述**                                           | 取值示例            |
   |:---|:---|:---|
   | spark.sql.broadcastTimeout | BroadcastHashJoin中广播表的超时时间，当任务并发数较高的时候，可以调高该参数值。 | -1（数值类型，实际为五分钟） |
      
   
 
