【问题标题】:How to submit Spark jobs to Apache Livy?如何向 Apache Livy 提交 Spark 作业?
【发布时间】:2018-03-11 13:22:37
【问题描述】:

我正在尝试了解如何将 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())

【问题讨论】:

    标签: scala apache-spark livy


    【解决方案1】:

    您的Test 类需要实现 Livy 的Job 接口,并且您需要在您的Test 类中实现其call 方法,从那里您可以访问jobContext/SparkContext。然后您可以在submit 方法中传递Test 的实例

    您不必自己创建 SparkSession,Livy 将在集群上创建它,您可以在 call 方法中访问该上下文。

    您可以在此处找到有关 Livy 编程 API 的更多详细信息:https://livy.incubator.apache.org/docs/latest/programmatic-api.html

    这是测试类的示例实现:

    import com.cloudera.livy.{Job, JobContext}
    
    class Test extends Job[Int]{
    
      override def call(jc: JobContext): Int = {
    
        val spark = jc.sparkSession()
    
        // Do anything with SparkSession
    
        1 //Return value
      }
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 2021-09-02
    相关资源
    最近更新 更多