当前位置:  开发笔记 > 编程语言 > 正文

获取当前正在运行的Hadoop任务的任务尝试ID

如何解决《获取当前正在运行的Hadoop任务的任务尝试ID》经验,为你挑选了2个好方法。

Hadoop教程的Task Side-Effect Files部分提到使用任务的"尝试"作为唯一名称.如何在我的mapper或reducer中获取此尝试ID?



1> 小智..:

如果您在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];
   }



2> 小智..:

使用新的Hadoop API:

context.getTaskAttemptID().getTaskID().getId()

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有