事实证明,虽然常规org.springframework.web.client.RestTemplate
类足以满足 GET 请求,但您需要使用org.springframework.security.kerberos.client.KerberosRestTemplate
POST 请求。如果 Livy 服务器启用了 CSRF(跨站点请求伪造)保护,您可能还需要向 POST 请求添加额外的标头,如此处所述。
GET /批处理示例
RestTemplate restTemplate = new RestTemplate();
GetBatchesResponse response2 = restTemplate.getForObject("http://your_livy_server:8998" + "/batches", GetBatchesResponse.class);
GetBatchesResponse
我写的一个简单的POJO代表对GET /batches
.
POST /批处理示例
PostBatchesRequest postRequestBody = new PostBatchesRequest();
postRequestBody.setFile("/path/to/your/application"); // In HDFS
KerberosRestTemplate kerberosRestTemplate = new KerberosRestTemplate("path_to_your_key_tab_file", "your_user@your_realm");
// Add CSRF header if required:
HttpHeaders headers = new HttpHeaders();
headers.set("X-Requested-By", "your_user@your_realm");
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<PostBatchesRequest> postRequest = new HttpEntity<PostBatchesRequest>(postRequestBody, headers);
Batch batch = kerberosRestTemplate.postForObject("http://your_livy_server:8998" + "/batches", postRequest, Batch.class);
我编写的 POJO在哪里PostBatchesRequest
和是分别代表请求正文和响应的 POJO 。Batch