Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 在不使用spark.Thread.maxAttempts参数的情况下控制单个spark作业中的尝试次数_Apache Spark - Fatal编程技术网

Apache spark 在不使用spark.Thread.maxAttempts参数的情况下控制单个spark作业中的尝试次数

Apache spark 在不使用spark.Thread.maxAttempts参数的情况下控制单个spark作业中的尝试次数,apache-spark,Apache Spark,我有一个用例,我正在运行一个spark作业,它将从一个配置单元表读取数据,然后写入另一个配置单元表。 我想要实现的是,当我为此启动Spark作业时,该作业应该在第一次尝试中失败,但在第二次尝试中成功。 spark参数:spark.Thread.maxAttempts设置为其默认值,即2,在我的环境中我无法控制它 以下是我尝试过的代码(感谢@Jacek): 我得到的错误是: java.util.NoSuchElementException: None.get at scala.None$.

我有一个用例,我正在运行一个spark作业,它将从一个配置单元表读取数据,然后写入另一个配置单元表。 我想要实现的是,当我为此启动Spark作业时,该作业应该在第一次尝试中失败,但在第二次尝试中成功。 spark参数:spark.Thread.maxAttempts设置为其默认值,即2,在我的环境中我无法控制它

以下是我尝试过的代码(感谢@Jacek):

我得到的错误是:

java.util.NoSuchElementException: None.get
    at scala.None$.get(Option.scala:347)
    at scala.None$.get(Option.scala:345)

在不使用TaskContext的情况下,我有一个解决方法,第一次尝试失败,第二次尝试成功

  • 在配置单元datalake/hdfs路径中创建临时文件夹
  • 如果文件夹为空,则向该文件夹写入一个虚拟文件,并使该过程失败。(第一次尝试)
  • 在第二次尝试中,由于此文件夹不为空,您可以转到else并在第二次尝试中执行代码
  • 在第二次尝试时清理该文件夹,以便在再次尝试作业时,第一次尝试将失败
  • Sudo代码:

    if(Temp Folder is Empty ){  
    //Executes for First attempt
    Write Dummy File to Temp Folder
    Raise an Exceptio to Fail
    }
    else{
    //Executes for second attempt
    ....Execute your code 
    Clean Temp Folder
    }
    

    希望它能对您有所帮助。

    TaskContext.get
    为您提供
    和例外。它只在执行器上可用,所以问题是如何使用这个
    TaskContextTest
    类?共享更多代码。我在spark shell中尝试了上面共享的代码,现在运行良好。但是当我在我的框架中调用这个类时,同样的错误也会出现。看起来我必须研究我的框架的属性,并找出如何将其与之集成。由于版权和专有权的限制,我将无法共享与框架相关的代码。谢谢@Jacek的调查。
    if(Temp Folder is Empty ){  
    //Executes for First attempt
    Write Dummy File to Temp Folder
    Raise an Exceptio to Fail
    }
    else{
    //Executes for second attempt
    ....Execute your code 
    Clean Temp Folder
    }