Scala 为什么new Job()抛出java.lang.IllegalStateException:状态为DEFINE而不是RUNNING的作业?

Scala 为什么new Job()抛出java.lang.IllegalStateException:状态为DEFINE而不是RUNNING的作业?,scala,apache-spark,Scala,Apache Spark,正在尝试将数据写入中 我以下是一个模板。本文中的代码使用作业设置来调用parquetoutputformatapi方法 scala> import org.apache.hadoop.mapreduce.Job scala> val job = new Job() java.lang.IllegalStateException: Job in state DEFINE instead of RUNNING at org.apache.hadoop.mapreduce.Jo

正在尝试将数据写入中

我以下是一个模板。本文中的代码使用作业设置来调用parquetoutputformatapi方法

scala> import org.apache.hadoop.mapreduce.Job 
scala> val job = new Job() 
java.lang.IllegalStateException: Job in state DEFINE instead of RUNNING
    at org.apache.hadoop.mapreduce.Job.ensureState(Job.java:283)
    at org.apache.hadoop.mapreduce.Job.toString(Job.java:452)
    at scala.runtime.ScalaRunTime$.scala$runtime$ScalaRunTime$$inner$1(ScalaRunTime.scala:324)
    at scala.runtime.ScalaRunTime$.stringOf(ScalaRunTime.scala:329)
    at scala.runtime.ScalaRunTime$.replStringOf(ScalaRunTime.scala:337)
    at .<init>(<console>:10)
    at .<clinit>(<console>)
    ...
scala>import org.apache.hadoop.mapreduce.Job
scala>val作业=新作业()
java.lang.IllegalStateException:作业处于定义状态而不是运行状态
在org.apache.hadoop.mapreduce.Job.restreat(Job.java:283)上
位于org.apache.hadoop.mapreduce.Job.toString(Job.java:452)
在scala.runtime.scalarantime$.scala$运行时$scalarantime$$内部$1(scalarantime.scala:324)
在scala.runtime.scalarantime$.stringOf处(scalarantime.scala:329)
在scala.runtime.scalarontime$.replStringOf(scalarontime.scala:337)
在。(:10)
在
...

Spark作业和MapReduce作业不同,Spark使用MapReduce的InputFormat在HDFS中获取输入


从堆栈跟踪中,错误来自toString方法。尝试使用spark submit而不是spark shell运行作业。它应该可以解决toString的错误。

为什么要创建MapReduce作业?好的,我已经详细解释了-与MapReduce无关。请阅读我更新的帖子。你能确认答案吗?中介绍的一个解决方法是将作业代码包装在一个方法中,这样Spark shell就不会试图调用它的toString()方法。添加了一段解释。这不是答案。您可以使用
mapreduce.Job
为Spark指定不同的Hadoop
InputFormat
s,并使用
Job
类。这就是OP使用
作业
类的原因。