使用 Spark 作业服务器的 Spark SQL 作业中的错误“此上下文的作业类型无效”

Posted

技术标签:

【中文标题】使用 Spark 作业服务器的 Spark SQL 作业中的错误“此上下文的作业类型无效”【英文标题】:The error "Invalid job type for this context" in spark SQL job with Spark job server 【发布时间】:2016-01-27 08:47:52 【问题描述】:

我使用 spark 作业服务器创建了一个 spark SQL 作业,并按照以下示例使用 HiveContext: https://github.com/spark-jobserver/spark-jobserver/blob/master/job-server-extras/src/spark.jobserver/HiveTestJob.scala

我能够启动服务器,但是当我运行我的应用程序时(我的 Scala 类 它扩展了 SparkSqlJob),我得到以下响应:


   "status": "ERROR",

   "result": "Invalid job type for this context"
 

谁能建议我出了什么问题或提供详细的程序 为 SparkSQL 设置作业服务器?

代码如下:

import com.typesafe.config.Config, ConfigFactory
import org.apache.spark._
import org.apache.spark.sql.hive.HiveContext
import spark.jobserver.SparkJobValid, SparkJobValidation, SparkHiveJob

object newHiveRest extends SparkHiveJob 


  def validate(hive: HiveContext, config: Config): SparkJobValidation = SparkJobValid

  def runJob(hive: HiveContext, config: Config): Any = 

    hive.sql(s"use default")
    val maxRdd = hive.sql(s"select count(*) from 'default'.'passenger'")

    maxRdd.count()
  

【问题讨论】:

作业服务器的日志如下: scala.runtime.AbstractPartialFunction$mcVL$sp.apply$mcVL$sp(AbstractPartialFunction.scala:33) scala.runtime.AbstractPartialFunction$mcVL$sp.apply( AbstractPartialFunction.scala:33) at org.apache.spark.SparkContext$$anonfun$assertNoOtherContextIsRunning$1.apply(SparkContext.scala:2083) at org.apache.spark.SparkContext$$anonfun$assertNoOtherContextIsRunning$1.apply(SparkContext.scala: 2065) 在 scala.Option.foreach(Option.scala:236) 在 org.apache.spark.SparkContext$.assertNoOtherContextIsRunning(SparkContext.scala:2065) 在 【参考方案1】:

对于 Spark SQL,您可以使用以下内容

https://github.com/spark-jobserver/spark-jobserver/blob/master/job-server-extras/src/spark.jobserver/SqlTestJob.scala

【讨论】:

感谢 Noorul 的帮助!我实际上使用了 HiveContext 类。所以我创建了一个扩展 SparkHiveJob 的作业。但它失败了。我在评论中发布了作业服务器的错误日志。 查看异常我认为当它在火花中断言多个上下文时它会失败。你能验证一下吗? 请参考问题中发布的代码。我没有创建任何 sparkContext,只是在 SparkHiveJob 中使用 HiveContext 实例。

以上是关于使用 Spark 作业服务器的 Spark SQL 作业中的错误“此上下文的作业类型无效”的主要内容,如果未能解决你的问题,请参考以下文章

Spark Sql 作业优化

在Spark SQL作业中使用地理空间函数

Spark SQL:为啥一个查询有两个作业?

使用 JDBC(例如 Squirrel SQL)用 Spark SQL 查询 Cassandra

Spark 1.3.x 的 org.apache.spark.sql.cassandra 的 API 文档在哪里?

spark streaming 和spark sql的区别