hive查询时取消对应yarn任务
主要有两种方式
- 一种是通过hive jdbc的hivestatement的getQueryLog方法获取yarn任务日志,解析日志内容,获取到application id,然后通过ssh的方式执行yarn application --kill 命令。
- 一种是通过设置hive查询时的任务名,如在使用mr引擎时,执行set mapred.task.name=jobname, 然后通过yarn rest api查询指定的任务名得到application id, 然后通过ssh的方式执行yarn application --kill 命令(或者在应用部署的机器上安装yarn客户端,通过api执行命令行)。
方式一
在执行查询之前开启异步定时查询yarn任务执行日志。如下代码
jdbcTemplate.execute(sql, new PreparedStatementCallback<Object>() {
@Override
public Object doInPreparedStatement(PreparedStatement ps) throws SQLException, DataAccessException {
HiveStatement stmt = ps.unwrap(HiveStatement.class)