Hadoop教程的Task Side-Effect Files部分提到使用任务的"尝试"作为唯一名称.如何在我的mapper或reducer中获取此尝试ID?
如果您在hadoop中需要副作用文件的唯一ID,则可以使用以下代码利用作业中的尝试唯一ID:
public static String getAttemptId(Configuration conf) throws IllegalArgumentException { if (conf == null) { throw new NullPointerException("conf is null"); } String taskId = conf.get("mapred.task.id"); if (taskId == null) { throw new IllegalArgumentException("Configutaion does not contain the property mapred.task.id"); } String[] parts = taskId.split("_"); if (parts.length != 6 || !parts[0].equals("attempt") || (!"m".equals(parts[3]) && !"r".equals(parts[3]))) { throw new IllegalArgumentException("TaskAttemptId string : " + taskId + " is not properly formed"); } return parts[4] + "-" + parts[5]; }
使用新的Hadoop API:
context.getTaskAttemptID().getTaskID().getId()