我正在使用Livy的Java API在我的集群上的YARN上提交spark作业。目前,这些工作是以“livy”用户身份提交的,但我想以Livy的代理用户身份提交工作。
可以通过在POST数据中传递一个字段,向Livy服务器发送POST请求来完成此操作。我想是否可以通过Livy的Java API来完成。
我使用标准方式提交工作:
LivyClient client = new LivyClientBuilder()
.setURI(new URI(livyUrl))
.build();
try {
System.err.printf("Uploading %s to the Spark context...\n", piJar);
client.uploadJar(new File(piJar)).get();
System.err.printf("Running PiJob with %d samples...\n", samples);
double pi = client.submit(new PiJob(samples)).get();
System.out.println("Pi is roughly: " + pi);
} finally {
client.stop(true);
}
答案 0 :(得分:1)
回答我自己的问题。 目前无法通过LivyClientBuilder设置代理用户。
解决方法是:
< livy-server >/session/
的POST请求)并从请求的响应中读取会话ID。可以通过在REST数据中传递代理用户来设置代理用户:{"kind": "spark", "proxyUser": "lok"}
< livy-server >/sessions/< id >/
)。