2017-07-21 48 views
1

我正在使用Livy的Java API在我的集群上的YARN上提交Spark作业。目前这些工作是以“livy”用户的身份提交的,但我想以Livy的代理用户身份提交工作。如何在Livy作业中通过其Java API设置代理用户

通过在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); 
} 

回答

1

发帖回答我自己的问题。 目前无法通过LivyClientBuilder设置代理用户。

一种用于此解决办法是:

  1. 创建通过REST API(POST请求< livy-server >/session/)会话,并从读请求的响应的会话ID。代理用户可以通过REST API将它传递到POST数据中来设置:{"kind": "spark", "proxyUser": "lok"}
  2. 创建会话后,使用ID通过LivyClientBuilder连接到它(livyURL将为< livy-server >/sessions/<id>/)。
相关问题