gpt4 book ai didi

hadoop:我怎么知道任务失败时正在处理什么文件?

转载 作者:可可西里 更新时间:2023-11-01 15:38:44 27 4
gpt4 key购买 nike

我的工作有一些失败的任务。我想尝试重现任务正在处理的文件,但找不到如何知道这些文件是哪些文件。

我如何找到任务失败时正在处理的文件?

最佳答案

我不知道这是否真的有效,但您可能想尝试一下(我使用 Hadoop 2.2 编写代码):

job.waitForCompletion(true);
Class<? extends InputFormat<?, ?>> clz = job.getInputFormatClass();
InputFormat<?, ?> inputFormat = ReflectionUtils.newInstance(clz, conf);
List<InputSplit> splits = inputFormat.getSplits(job);
TaskCompletionEvent[] events = job.getTaskCompletionEvents(0);
for (TaskCompletionEvent ev : events) {
if (ev.isMapTask() && ev.getStatus() == Status.FAILED) {
int idWithinJob = ev.idWithinJob();
InputSplit inputSplit = splits.get(idWithinJob);
if (inputSplit instanceof FileSplit) {
FileSplit sp = (FileSplit) inputSplit;
System.out.println(sp.getPath() + " failed!");
}
}
}

这个想法很简单,你得到所有的任务事件,获取 map 和失败的事件。然后你可以得到一个通常分配给内部 split 的索引。

拆分本身可以通过在作业数据上运行来获得。请注意,FileSplit 也可以是文件( block )的部分,因此您要检查内部偏移量长度字段。拆分的类型取决于 InputFormat,因此不能保证返回的拆分是 FileSplit

关于hadoop:我怎么知道任务失败时正在处理什么文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20718403/

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