Spark创建新的Spark会话/上下文并从失败中恢复

时间:2019-08-09 14:51:13

标签: apache-spark session exception pyspark

我工作的Spark平台不稳定,每次都会因各种原因而失败。这项工作不会在Hadoop管理器上死亡,而会持续运行,所以我想杀死它。

在相同的python脚本中,一旦发生故障,我想终止当前的spark会话,创建另一个sparkcontext / session并从最后一个检查点接起。我确实经常检查站,以免DAG太长。容易失败的部分是while循环,因此我可以负担得起当前的df

有什么想法我可以实现吗?

我最初的想法是

# config/services.yaml
services:
    App\Command\MyCommand:
        $appEnv:         '%env(APP_ENV)%'
        $mailerUsername: '%env(MAILER_USERNAME)%'

# src\Command\MyCommand
class MyCommand extends Command {
    protected static $defaultName = 'app:mine';

    private $appEnv;
    private $mailerUsername;

    public function __construct($appEnv,$mailerUsername) {
        parent::__construct();
        $this->appEnv = $appEnv;
        $this->mailerUsername = $mailerUsername;
    }
    protected function execute(InputInterface $input, OutputInterface $output) {
        $output->writeln(("My Command " . $this->appEnv . " " . $this->mailerUsername));
    }
}

另一个问题是如何从检查点显式读取(已由df.checkpoint()完成)

1 个答案:

答案 0 :(得分:1)

非流式检查中要使用的服务器沿袭。它不是为在不同应用程序或不同Spark上下文之间共享数据而设计的。

实际上不可能做到。