gpt4 book ai didi

java - 如何保证所有Sparkworker都被停止了?

转载 作者:行者123 更新时间:2023-12-02 11:15:10 25 4
gpt4 key购买 nike

我的目标是将每个 Spark 工作线程的所有数据累积到一个文件中。

我读了一些article对于类似问题的解决方案,作者鼓励使用 org.apache.hadoop.fs.FileUtil#copyMerge 方法来实现此类目的。我决定在我的项目中实现它,这就是我所拥有的:

 try (JavaSparkContext sparkCtx = new JavaSparkContext(sparkConf)) {
// reading, transforming and storing RDDs to the text files
FileUtil.copyMerge(...) // merge them altogether into the single file
} // 'try-with-resources' eventually closes spark context

在实现这种方法时,我感到困惑:如果我运行此代码,我最终将在每个工作实例上运行它,并且它们将相互覆盖。如果某些 worker 无法完成其工作,会发生什么情况?每个 worker 都会有自己的最终单个文件副本?

我意识到我需要找到一些地方/方法来保证所有worker都停止执行以及我可以从哪里开始数据积累。

如何实现这一目标?我的猜测是在 try-with-resources block 之后运行此数据积累,对吗?

最佳答案

FileUtil 完全独立于 Spark,不使用 Spark 工作线程或执行程序。

如果您想确保它在 Spark 应用程序完成后执行,您可以在停止上下文后立即调用它。

sparkCtx.stop();
FileUtil.copyMerge(...)

关于java - 如何保证所有Sparkworker都被停止了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50334749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com