学习 Livy(二):Java API

Apache Livy 提供了 Java API 提交 Spark 任务到 Livy。

添加依赖:

<dependency>  
  <groupId>org.apache.livy</groupId>
  <artifactId>livy-client-http</artifactId>
  <version>0.5.0-incubating</version>
</dependency>  

Spark 任务需要实现 org.apache.livy.Job 接口:

public class TestJob implements Job<String> {

  @Override
  public Double call(JobContext ctx) throws Exception {
    return ctx.sparkSession.version();
  }

}

从任务上下文 org.apache.livy.JobContext 对象,可以获取运行 Spark 任务的 SparkSessionSparkContextSQLContextHiveContext 等对象。

Java API 的实现基于 REST API,即 org.apache.livy.client.http.HttpClient

LivyClient client = new LivyClientBuilder()  
  .setURI(new URI("http://127.0.0.1:8998"))
  .setConf("spark.sql.parquet.writeLegacyFormat", "true")
  .build(); // ①

try {  
  client.uploadJar(new File(path)).get(); // ②

  String version = client.submit(new TestJob()).get(); // ③

  System.out.println(version);
} finally {
  client.stop(true); // ④
}

① 根据 Livy URL 地址构建 LivyClient;

② 上传依赖 Java 软件包;

③ 提交 Livy 任务并获取结果;

④ 关闭客户端。

参考