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 任务的 SparkSession
、 SparkContext
、 SQLContext
、 HiveContext
等对象。
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 任务并获取结果;
④ 关闭客户端。