我正在尝试了解如何将 Spark 作业提交给 Apache Livy。
我在我的 POM.xml 中添加了以下 API:
<dependency>
<groupId>com.cloudera.livy</groupId>
<artifactId>livy-api</artifactId>
<version>0.3.0</version>
</dependency>
<dependency>
<groupId>com.cloudera.livy</groupId>
<artifactId>livy-scala-api_2.11</artifactId>
<version>0.3.0</version>
</dependency>
然后我在 Spark 中有以下代码,我想根据请求提交给 Livy。
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions._
object Test {
def main(args: Array[String]) {
val spark = SparkSession.builder()
.appName("Test")
.master("local[*]")
.getOrCreate()
import spark.sqlContext.implicits._
implicit val sparkContext = spark.sparkContext
// ...
}
}
使用以下代码创建LivyClient
实例并将应用程序代码上传到 Spark 上下文:
val client = new LivyClientBuilder()
.setURI(new URI(livyUrl))
.build()
try {
client.uploadJar(new File(testJarPath)).get()
client.submit(new Test())
} finally {
client.stop(true)
}
但是,问题在于代码Test
不适合与 Apache Livy 一起使用。
如何调整Test
对象的代码以便能够运行client.submit(new Test())
?