gpt4 book ai didi

scala - spark 中的阶段/任务结束时是否有 "hook"?

转载 作者:可可西里 更新时间:2023-11-01 15:56:21 24 4
gpt4 key购买 nike

我有一个 Spark UDF,它需要在执行程序(我们使用的是 YARN)的本地磁盘上安装一个特定文件(在我的例子中是 MATLAB 运行时)。由于我无法直接访问执行器机器,我必须找到另一种方法在集群上部署我的运行时。由于文件很大,我无法在每次调用 UDF 时都安装/删除它,所以我想到了以下策略:

  • 在 UDF 的开头,我检查运行时是否在特定路径下在本地可用,例如tmp 目录
  • 如果运行时尚未安装,我会从 HDFS 中获取它并安装在 tmp 中。这仅在第一次在特定执行程序上调用 UDF 时执行。

上面的场景工作正常,但我安装的运行时遍布整个集群,所以我想事后删除它们。

似乎没有办法为执行者添加关闭 Hook (Spark worker shutdown - how to free shared resources),是否有另一个“ Hook ”,例如任务结束 Hook ?

最佳答案

正如我提到的,您可以监听任务的结束(我现在有时间尝试),至少在全局级别上在 spark 上下文中使用类似的东西(我将在 scala 中写一些东西稍后,因为我现在无法运行 scala 代码):

//sc is the SparkContext
sc.addSparkListener(new SparkListener() {

@Override
public void onTaskEnd(SparkListenerTaskEnd taskEnd) {
// TODO Auto-generated method stub
System.out.println("Task ended: " + taskEnd);
super.onTaskEnd(taskEnd);
}
});

还有很多其他听众,请参阅 SparkListener

关于scala - spark 中的阶段/任务结束时是否有 "hook"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43135575/

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