in service/src/main/java/org/apache/griffin/core/job/LivyTaskSubmitHelper.java [231:285]
public String postToLivy(String uri) {
LOGGER.info("Post To Livy URI is: " + uri);
String needKerberos = env.getProperty("livy.need.kerberos");
LOGGER.info("Need Kerberos:" + needKerberos);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set(REQUEST_BY_HEADER, "admin");
if (needKerberos == null || needKerberos.isEmpty()) {
LOGGER.error("The property \"livy.need.kerberos\" is empty");
return null;
}
if (needKerberos.equalsIgnoreCase("false")) {
LOGGER.info("The livy server doesn't need Kerberos Authentication");
String result = null;
try {
HttpEntity<String> springEntity = new HttpEntity<>(toJsonWithFormat(livyConfMap), headers);
result = restTemplate.postForObject(uri, springEntity, String.class);
LOGGER.info(result);
} catch (HttpClientErrorException e) {
LOGGER.error("Post to livy ERROR. \n response status : " + e.getMessage()
+ "\n response header : " + e.getResponseHeaders()
+ "\n response body : " + e.getResponseBodyAsString());
} catch (JsonProcessingException e) {
LOGGER.error("Json Parsing failed, {}", e.getMessage(), e);
} catch (Exception e) {
LOGGER.error("Post to livy ERROR. \n {}", e);
}
return result;
} else {
LOGGER.info("The livy server needs Kerberos Authentication");
String userPrincipal = env.getProperty("livy.server.auth.kerberos.principal");
String keyTabLocation = env.getProperty("livy.server.auth.kerberos.keytab");
LOGGER.info("principal:{}, lcoation:{}", userPrincipal, keyTabLocation);
KerberosRestTemplate restTemplate = new KerberosRestTemplate(keyTabLocation, userPrincipal);
HttpEntity<String> springEntity = null;
try {
springEntity = new HttpEntity<>(toJsonWithFormat(livyConfMap), headers);
} catch (HttpClientErrorException e) {
LOGGER.error("Post to livy ERROR. \n response status : " + e.getMessage()
+ "\n response header : " + e.getResponseHeaders()
+ "\n response body : " + e.getResponseBodyAsString());
} catch (JsonProcessingException e) {
LOGGER.error("Json Parsing failed, {}", e.getMessage(), e);
} catch (Exception e) {
LOGGER.error("Post to livy ERROR. {}", e.getMessage(), e);
}
String result = restTemplate.postForObject(uri, springEntity, String.class);
LOGGER.info(result);
return result;
}
}