我工作的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()完成)
答案 0 :(得分:1)
非流式检查中要使用的服务器沿袭。它不是为在不同应用程序或不同Spark上下文之间共享数据而设计的。
实际上不可能做到。