private void executeQuery(String query) { CommandProcessorResponse response = null; boolean failed = false; int retryCount = RETRIES; try { response = hiveDriver.run(query); } catch (CommandNeedRetryException ex) { if (--retryCount == 0) failed = true; } if (failed || response.getResponseCode() != 0) throw new RuntimeException( String.format( "Failed to execute command '%s', errorMsg = '%s'", query, (response != null ? response.getErrorMessage() : ""))); }
@Override public void run() throws HiveSQLException { setState(OperationState.RUNNING); String statement_trimmed = statement.trim(); String[] tokens = statement_trimmed.split("\\s"); String cmd_1 = statement_trimmed.substring(tokens[0].length()).trim(); int ret = 0; String errorMessage = ""; String SQLState = null; try { driver = new Driver(getParentSession().getHiveConf()); // In Hive server mode, we are not able to retry in the FetchTask // case, when calling fetch queries since execute() has returned. // For now, we disable the test attempts. driver.setTryCount(Integer.MAX_VALUE); String subStatement = new VariableSubstitution().substitute(getParentSession().getHiveConf(), statement); response = driver.run(subStatement); if (0 != response.getResponseCode()) { throw new HiveSQLException( "Error while processing statement: " + response.getErrorMessage(), response.getSQLState(), response.getResponseCode()); } mResultSchema = driver.getSchema(); if (mResultSchema != null && mResultSchema.isSetFieldSchemas()) { resultSchema = new TableSchema(mResultSchema); setHasResultSet(true); } else { setHasResultSet(false); } } catch (HiveSQLException e) { setState(OperationState.ERROR); throw e; } catch (Exception e) { setState(OperationState.ERROR); throw new HiveSQLException("Error running query: " + e.toString()); } setState(OperationState.FINISHED); }