为什么 new Job() 会抛出 java.lang.IllegalStateException: Job in state DEFINE 而不是 RUNNING?

mat*_*ber 5 scala apache-spark

尝试在Spark 1.1.1中将数据写入Parquet

我正在关注强大的大数据三重奏:Spark、Parquet 和 Avro作为模板。文章中的代码使用作业设置来调用 ParquetOutputFormat API 的方法。

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>)
    ...
Run Code Online (Sandbox Code Playgroud)

suz*_*omo 0

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

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