mapreduce job()引发了“java.lang.illegalstateexception”异常无法计算org.apache.hadoop.mapreduce.job.tostring()

bfhwhh0e  于 2021-06-02  发布在  Hadoop
关注(0)|答案(3)|浏览(1824)

我正在运行一个spark流程序,它使用mapreduce作业以avroparquet格式编写文件。程序在集群上执行时工作正常,但在本地执行时失败。
代码

import org.apache.hadoop.mapreduce.Job
val job = Job.getInstance()

引发以下异常:

Method threw 'java.lang.IllegalStateException' exception. Cannot evaluate org.apache.hadoop.mapreduce.Job.toString()

以下是用于提交spark流作业的代码:

SparkConf conf = new SparkConf(false)
                .setMaster("local[2]")
                .setAppName("test");
    SparkContext sc = new SparkContext(conf);
    MyClass job = new MyClass();
    job.run();

    class MyClass(){
    protected def run(): Unit ={

        val ssc: StreamingContext = createStreamingContext(parameters)
        // here there is something like 
        // stream.map(func1).reduceBykey(func2).foreachRDD(rdd => {val job = Job.getInstance()})
        ssc.start()
    }
h5qlskok

h5qlskok1#

很可能是因为它试图在提交作业之前调用您作业中的tostring。
不要手动创建作业示例,而是尝试使用spark submit--class myclass--master local[2]/path/to/yourjar.jar(提交spark应用程序)提交它
您的代码可能如下所示:

object MyClass {
    def main(args: Array[String]): Unit ={
    val conf = new SparkConf(false)
            .setMaster("local[2]")
            .setAppName("test");
    val sc = new SparkContext(conf);

    // do what you need
}
xa9qqrwz

xa9qqrwz2#

因为这个想法,它会自动处理字符串。您需要在idea的debugger中设置它,并删除自动处理头字符串的检查。在这里应该是“builder,exception,deployer”。

0s0u357o

0s0u357o3#

我发现这是一个非阻塞异常。我可以在调试模式下看到异常,但程序可以正确执行到最后。

相关问题