Hadoop チュートリアルのTask Side-Effect Filesセクションでは、タスクの「attemptid」を一意の名前として使用することが言及されています。マッパーまたはリデューサーでこの試行 ID を取得するにはどうすればよいですか?
8114 次
3 に答える
11
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];
}
于 2009-09-29T21:26:48.723 に答える
4
パーティーに遅れますが、TaskAttemptID
クラスを使用してプロパティを解析できmapred.task.id
ます。
私の場合、試行値自体が必要で、マッパーで次を使用しました。
int _attemptID;
@Override
public void configure(JobConf conf) {
TaskAttemptID attempt = TaskAttemptID.forName(conf.get("mapred.task.id"));
_attemptID = attempt.id();
}
于 2012-07-04T20:19:58.407 に答える