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 任务并获取结果;
④ 关闭客户端。