
# 通过DataArts Studio调度Spark作业失败
#### 问题现象
DataArts Studio作业调度失败，显示读取"/thriftserver/active_thriftserver"路径下的数据失败。
报错信息为：
```
Can not get JDBC Connection, due to KeeperErrorCode = NoNode for /thriftserver/active_thriftserver。
```
#### 原因分析
DataArts Studio提交Spark作业时调用Spark的JDBC方式，而Spark会启动一个名为thriftserver的进程以供客户端提供JDBC连接，JDBCServer在启动时会在ZooKeeper的"/thriftserver"目录下创建子目录"active_thriftserver"，并且注册相关连接信息。如果读不到该连接信息就会JDBC连接异常。
#### 处理步骤
检查ZooKeeper下面是否有目标目录和注册的信息
1. 以**root** 用户登录任意一个Master节点并初始化环境变量。
   
   **source /opt/client/bigdata_env**
   
   
2. 执行**zkCli.sh -server '** *ZooKeeper实例IP地址* *:ZooKeeper连接端口* **'** 命令登录ZooKeeper。
   
   ZooKeeper连接端口通常为2181，可通过查看ZooKeeper服务配置参数"clientPort"获取。
   
   
3. 执行ls /thriftserver查看是否有"active_thriftserver"目录。
   
   - 如果有active_thriftserver目录，执行get /thriftserver/active_thriftserver查看该目录下是否有注册的配置信息。
     - 如果有注册的配置信息，联系华为云支持人员处理。
     
     - 如果没有注册的配置信息，执行[4]
      
   
   - 如果没有active_thriftserver目录，执行[4]。
   
   
   
   
4. 登录Manager界面，查看Spark的JDBCServer实例的主备状态是否未知。
   
   - 是，执行[5]。
   
   - 否，联系运维人员处理。
   
   
   
   
5. 重启两个JDBCServer实例，查看主备实例状态恢复正常且zk下面有了目标目录和数据，作业即可恢复正常。若实例状态没有恢复请联系华为云支持人员处理。
 
