使用 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 作业中的错误“此上下文的作业类型无效”的主要内容,如果未能解决你的问题,请参考以下文章
使用 JDBC(例如 Squirrel SQL)用 Spark SQL 查询 Cassandra