Search in sources :

Example 1 with ExecuteResultVO

use of com.dtstack.taier.develop.dto.devlop.ExecuteResultVO in project Taier by DTStack.

the class BatchHadoopSelectSqlService method selectRunLog.

/**
 * 获取sql运行日志
 * @param batchTask
 * @param selectSql
 * @param tenantId
 * @param userId
 * @param isRoot
 * @param taskType
 * @return
 * @throws Exception
 */
public ExecuteResultVO selectRunLog(BatchTask batchTask, BatchSelectSql selectSql, Long tenantId, Long userId, Boolean isRoot, Integer taskType) throws Exception {
    String jobId = selectSql.getJobId();
    ExecuteResultVO result = new ExecuteResultVO(jobId);
    // 是否需要脱敏,非admin用户并且是sparkSql needMask才会为true ps:hiveSql不支持脱敏
    if (TempJobType.SIMPLE_SELECT.getType().equals(selectSql.getIsSelectSql())) {
        return result;
    }
    ActionJobEntityVO engineEntity = null;
    // 高级运行的临时表记录和发送到engine的jobId不是同一条记录
    if (StringUtils.isNotEmpty(selectSql.getFatherJobId())) {
        engineEntity = getTaskStatus(selectSql.getFatherJobId());
    } else {
        engineEntity = getTaskStatus(jobId);
    }
    if (engineEntity == null) {
        return result;
    }
    Integer status = TaskStatus.getShowStatus(engineEntity.getStatus());
    result.setStatus(status);
    if (buildLogsWithCheckTaskStatus(selectSql, tenantId, result, StringUtils.isNotEmpty(selectSql.getFatherJobId()) ? selectSql.getFatherJobId() : jobId, engineEntity, status)) {
        return result;
    }
    // update time
    batchSelectSqlService.updateGmtModify(jobId, tenantId);
    return result;
}
Also used : ExecuteResultVO(com.dtstack.taier.develop.dto.devlop.ExecuteResultVO) ActionJobEntityVO(com.dtstack.taier.scheduler.vo.action.ActionJobEntityVO)

Example 2 with ExecuteResultVO

use of com.dtstack.taier.develop.dto.devlop.ExecuteResultVO in project Taier by DTStack.

the class BatchJobService method startSqlImmediately.

/**
 * 运行SQL任务
 * @param userId
 * @param tenantId
 * @param taskId
 * @param uniqueKey
 * @param sql
 * @param taskVariables
 * @param dtToken
 * @param isCheckDDL
 * @param isRoot
 * @param isEnd         是否是当前session最后一条sql
 * @return
 */
public ExecuteResultVO startSqlImmediately(Long userId, Long tenantId, Long taskId, String uniqueKey, String sql, List<Map> taskVariables, String dtToken, Integer isCheckDDL, Boolean isRoot, Boolean isEnd) {
    final User user = userService.getById(userId);
    dtToken = String.format("%s;dt_user_id=%s;dt_username=%s;", dtToken, user.getId(), user.getUserName());
    ExecuteResultVO result = new ExecuteResultVO();
    try {
        final BatchTask task = batchTaskService.getOneWithError(taskId);
        result.setTaskType(task.getTaskType());
        // 真正运行的SQL是页面传入的SQL
        task.setSqlText(sql);
        // 将SQL中的 系统参数和自定义参数 转换为DTO对象
        List<BatchParamDTO> batchParamDTOS = this.batchTaskParamService.paramResolver(taskVariables);
        final List<BatchTaskParam> params = this.batchTaskParamService.convertParam(batchParamDTOS);
        List<BatchTaskParamShade> taskParamsToReplace = this.batchTaskParamService.convertShade(params);
        ParamTaskAction paramTaskAction = getParamTaskAction(task, userId, taskParamsToReplace);
        ParamActionExt paramActionExt = actionService.paramActionExt(paramTaskAction.getBatchTask(), paramTaskAction.getJobId(), paramTaskAction.getFlowJobId());
        sql = paramActionExt.getSqlText();
        String jobId = paramActionExt.getJobId();
        task.setTaskParams(paramActionExt.getTaskParams());
        IBatchJobExeService batchJobService = this.multiEngineServiceFactory.getBatchJobExeService(task.getTaskType());
        result = batchJobService.startSqlImmediately(userId, tenantId, uniqueKey, taskId, sql, isRoot, task, dtToken, isEnd, jobId);
    } catch (Exception e) {
        LOGGER.warn("startSqlImmediately-->", e);
        result.setMsg(e.getMessage());
        result.setStatus(TaskStatus.FAILED.getStatus());
        result.setSqlText(sql);
        return result;
    }
    return result;
}
Also used : ParamTaskAction(com.dtstack.taier.scheduler.impl.pojo.ParamTaskAction) ExecuteResultVO(com.dtstack.taier.develop.dto.devlop.ExecuteResultVO) IBatchJobExeService(com.dtstack.taier.develop.service.develop.IBatchJobExeService) RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException) BatchParamDTO(com.dtstack.taier.develop.dto.devlop.BatchParamDTO) ParamActionExt(com.dtstack.taier.scheduler.impl.pojo.ParamActionExt)

Example 3 with ExecuteResultVO

use of com.dtstack.taier.develop.dto.devlop.ExecuteResultVO in project Taier by DTStack.

the class BatchHadoopSelectSqlService method selectData.

/**
 * 从临时表查询数据
 * @param batchTask
 * @param selectSql
 * @param tenantId
 * @param tenantId
 * @param userId
 * @param isRoot
 * @param taskType
 * @return
 * @throws Exception
 */
@Override
public ExecuteResultVO selectData(BatchTask batchTask, BatchSelectSql selectSql, Long tenantId, Long userId, Boolean isRoot, Integer taskType) throws Exception {
    String jobId = selectSql.getJobId();
    ExecuteResultVO result = new ExecuteResultVO(jobId);
    if (selectSql.getIsSelectSql() == TempJobType.SIMPLE_SELECT.getType()) {
        result.setResult(queryData(tenantId, selectSql.getSqlText(), taskType));
        result.setSqlText(selectSql.getSqlText());
    } else {
        ActionJobEntityVO engineEntity = null;
        // 高级运行的临时表记录和发送到engine的jobId不是同一条记录
        if (StringUtils.isNotEmpty(selectSql.getFatherJobId())) {
            engineEntity = getTaskStatus(selectSql.getFatherJobId());
        } else {
            engineEntity = getTaskStatus(jobId);
        }
        if (engineEntity == null) {
            return result;
        }
        Integer status = TaskStatus.getShowStatus(engineEntity.getStatus());
        result.setStatus(status);
        if (buildDataWithCheckTaskStatus(selectSql, tenantId, result, status)) {
            return result;
        }
        // update time
        batchSelectSqlService.updateGmtModify(jobId, tenantId);
    }
    return result;
}
Also used : ExecuteResultVO(com.dtstack.taier.develop.dto.devlop.ExecuteResultVO) ActionJobEntityVO(com.dtstack.taier.scheduler.vo.action.ActionJobEntityVO)

Example 4 with ExecuteResultVO

use of com.dtstack.taier.develop.dto.devlop.ExecuteResultVO in project Taier by DTStack.

the class BatchHadoopSelectSqlService method selectStatus.

/**
 * 获取sql 执行结果
 * @param task
 * @param selectSql
 * @param tenantId
 * @param userId
 * @param isRoot
 * @param taskType
 * @return
 */
@Override
public ExecuteResultVO selectStatus(BatchTask task, BatchSelectSql selectSql, Long tenantId, Long userId, Boolean isRoot, Integer taskType) {
    ExecuteResultVO executeResultVO = new ExecuteResultVO(selectSql.getJobId());
    executeResultVO.setStatus(getExecuteSqlStatus(selectSql));
    return executeResultVO;
}
Also used : ExecuteResultVO(com.dtstack.taier.develop.dto.devlop.ExecuteResultVO)

Example 5 with ExecuteResultVO

use of com.dtstack.taier.develop.dto.devlop.ExecuteResultVO in project Taier by DTStack.

the class BatchSparkHiveSqlExeService method simpleQuery.

/**
 * 简单查询结果
 *
 * @param tenantId
 * @param parseResult
 * @param currentDb
 * @param tenantId
 * @param userId
 * @param scheduleJobType
 * @return
 */
protected ExecuteResultVO<List<Object>> simpleQuery(Long tenantId, ParseResult parseResult, String currentDb, Long userId, EScheduleJobType scheduleJobType) {
    ExecuteResultVO<List<Object>> result = new ExecuteResultVO<>();
    Matcher matcher = SIMPLE_QUERY_PATTERN.matcher(parseResult.getStandardSql());
    if (matcher.find()) {
        String tableName = parseResult.getMainTable().getName();
        // 这里增加一条记录,保证简单查询sql也能下载数据
        String jobId = UUID.randomUUID().toString();
        String parseColumnsString = "{}";
        selectSqlService.addSelectSql(jobId, tableName, TempJobType.SIMPLE_SELECT.getType(), tenantId, parseResult.getStandardSql(), userId, parseColumnsString, scheduleJobType.getType());
        result.setJobId(jobId);
        result.setContinue(false);
    } else {
        try {
            List<List<Object>> executeResult = jdbcServiceImpl.executeQuery(tenantId, null, scheduleJobType, currentDb.toLowerCase(), parseResult.getStandardSql());
            batchSqlExeService.dealResultDoubleList(executeResult);
            result.setStatus(TaskStatus.FINISHED.getStatus());
            result.setResult(executeResult);
        } catch (Exception e) {
            LOGGER.error("", e);
            result.setStatus(TaskStatus.FAILED.getStatus());
            result.setMsg(e.getMessage());
        }
        result.setContinue(false);
    }
    return result;
}
Also used : Matcher(java.util.regex.Matcher) ExecuteResultVO(com.dtstack.taier.develop.dto.devlop.ExecuteResultVO) List(java.util.List) RdosDefineException(com.dtstack.taier.common.exception.RdosDefineException)

Aggregations

ExecuteResultVO (com.dtstack.taier.develop.dto.devlop.ExecuteResultVO)8 RdosDefineException (com.dtstack.taier.common.exception.RdosDefineException)3 List (java.util.List)3 TenantComponent (com.dtstack.taier.dao.domain.TenantComponent)2 ParseResult (com.dtstack.taier.develop.sql.ParseResult)2 ActionJobEntityVO (com.dtstack.taier.scheduler.vo.action.ActionJobEntityVO)2 Forbidden (com.dtstack.taier.common.annotation.Forbidden)1 DataSourceType (com.dtstack.taier.common.enums.DataSourceType)1 BatchParamDTO (com.dtstack.taier.develop.dto.devlop.BatchParamDTO)1 BuildSqlVO (com.dtstack.taier.develop.dto.devlop.BuildSqlVO)1 ExecuteSqlParseVO (com.dtstack.taier.develop.dto.devlop.ExecuteSqlParseVO)1 SqlResultVO (com.dtstack.taier.develop.dto.devlop.SqlResultVO)1 IBatchJobExeService (com.dtstack.taier.develop.service.develop.IBatchJobExeService)1 ISqlExeService (com.dtstack.taier.develop.service.develop.ISqlExeService)1 ParamActionExt (com.dtstack.taier.scheduler.impl.pojo.ParamActionExt)1 ParamTaskAction (com.dtstack.taier.scheduler.impl.pojo.ParamTaskAction)1 Matcher (java.util.regex.Matcher)1